Фон
В настоящее время я тестирую Perl-скрипт, работающий в cshell ( по умолчанию компании, если вам интересно ), который будет использоваться заданием Jenkins. В рамках этого сценария я проверяю, существует ли на пути gradle.
Я добавляю каталог gradle к пути, затем сохраняю локальную версию пути, как показано ниже:
$ENV{PATH} .= ":/vobs/common/gradle-X.X/bin";
my $myPATH = $ENV{ "PATH" };
Затем я проверяю работоспособность с помощью команды which внутри команды system , как показано ниже:
system ("/bin/env PATH=$myPath which gradle" );
В сообщении об ошибке указано, что я правильно добавил путь, но по какой-то причине он не может найти градел в нем, как показано ниже:
which: no gradle in (<standard directories>:/vobs/common/gradle-X.X/bin)
Примечание: Другая основная причина, по которой я упомянул cshell, заключается в том, что эти два вопроса не относятся к моей проблеме, поскольку они связаны с bash:
Почему 'whereis' и 'which' не показывают мне местоположение команды?
Как очистить кэш путей Bash к исполняемым файлам?
Вопрос
Почему «какие» пропускают команды, несмотря на то, что знают, что каталог / bin существует в пути?