Указание конкретной версии для сценариев shebanged - PullRequest
1 голос
/ 08 января 2011

Если я вызываю исполняемый скрипт:

$ ./myscript

, которое имеет следующее определение вверху:

#! /usr/bin/env perl

и у меня есть следующие perls:

$ ls -l /usr/bin | grep perl

-rwxr-xr-x.   2 root root        8416 2010-07-09 05:18 perl --> perl5.10.0
-rwxr-xr-x.   2 root root        8416 2010-07-09 05:18 perl5.10.0
-rwxr-xr-x.   2 root root        8416 2010-07-09 05:18 perl4.10.0

Можно ли установить какую-то переменную окружения (или любое другое средство), чтобы сказать, что используемая версия perl будет perl4.10.0? Я ищу ответ, который не включает в себя вызов скрипта с абсолютным путем к определенной версии perl, не меняет символическую ссылку и не зависит от языка (то есть он будет работать для /usr/bin/env ruby, /usr/bin/env python и т. Д. ).

1 Ответ

3 голосов
/ 08 января 2011

Нет - #! /usr/bin/env perl означает «использовать результат выполнения /usr/bin/env perl в качестве интерпретатора для этого сценария», поэтому вам потребуется передать дополнительные знания env (или любому другому сценарию, который вы выбрали для вызова в командестрока), чтобы узнать, как найти исполняемые файлы в соответствии с аргументами, которые вы передали./usr/bin/env perl не ищет в вашем $ PATH файлы, соответствующие "perl *" - он ищет исполняемый файл с именем точно 'perl'.

...