Почему «которые» пропускают команды, даже если каталог / bin находится в PATH? - PullRequest
0 голосов
/ 20 марта 2019

Фон

В настоящее время я тестирую 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 существует в пути?

1 Ответ

1 голос
/ 20 марта 2019

Возможно, у вашего сценария недостаточно прав для доступа к /vobs/common/gradle-X.X/bin.

...