bin/env perl vs bin/perl

60 views
Skip to first unread message

Sergiy Borodych

unread,
Aug 23, 2011, 7:39:35 AM8/23/11
to kiev-perl-...@googlegroups.com
Hello mongers,

Последнее время замечаю тенденцию писать в начале скрипта
#!/usr/bin/env perl
вместо
#!/usr/bin/perl

Хотел бы спросить у уважаемого сообщества:
А с чем это связано ?
Какие плюсы в таком написании ?

--
Sergiy Borodych
http://bor.org.ua

Maxim Vuets

unread,
Aug 23, 2011, 7:51:17 AM8/23/11
to kiev-perl-...@googlegroups.com
2011/8/23 Sergiy Borodych <sergiy....@gmail.com>:

> Хотел бы спросить у уважаемого сообщества:
> А с чем это связано ?
> Какие плюсы в таком написании ?

perl, бывает, лежит в /usr/local/bin/perl или в /opt где-то.
Следовательно нужно редактировать shebang в каждом скрипте.
А env (если он есть) (: смотрит $PATH на предмет perl и запускает его.
Типа улучшенная переносимость.
(Этот трюк актуален для любых скриптов.)


--
maxim.vuets.name

Yaroslav Korshak

unread,
Aug 23, 2011, 7:57:24 AM8/23/11
to kiev-perl-...@googlegroups.com
Hello bor

perlbrew позволяет держать несколько версий perl и переключаться между
ними.
Но если у тебя есть выполняемые скрипты с заголовком #!/usr/bin/perl то
все настройки катятся в пропасть.
Не так давно потерял пол часа на дебаг своего плагина к Module::Starter,
прежде чем понял, что имею дело с такой ситуацией:
cpanm установил мою библиотеку в perl-5.14.1, а module-starter
(установленный в том же perl-5.14.1) выполняется через perl-5.10.1
Собственно, патч уже готов, я только собираюсь проверить, везде ли есть
/usr/bin/env и какие проблемы могут из этого получиться.
Пока оных не вижу.

--
Regards
yko

Oleg Alistratov

unread,
Aug 23, 2011, 8:14:20 AM8/23/11
to kiev-perl-...@googlegroups.com, Yaroslav Korshak

On 23.08.2011 14:57, Yaroslav Korshak wrote:

> я только собираюсь проверить, везде ли есть /usr/bin/env

coreutils

--
Олег Алистратов

Denis Zhdanov

unread,
Aug 23, 2011, 8:43:39 AM8/23/11
to kiev-perl-...@googlegroups.com
Привет всем!
Педивикия http://en.wikipedia.org/wiki/Shebang_(Unix)#Portability
говорит что проблемы наблюдаются в OpenServer 5.0.6 и Unicos 9.0.2 в
котором есть /bin/env но нет /usr/bin/env - но не думаю что кто то
юзает столь экзотические вещи. Еще тамже говорится что может быть
проблема с передачей аргументов такому скрипту - в смысле во многих
системах включая линукс не сработает #/usr/bin/env perl -d скажем.
Ну и еще минус env - security issue, в том смысле что злобный юзер
может подсунуть гадость в PATH под именем perl и она запустится вместо
настоящего perl ($PATH как и любая переменная окружения не считается
надежным источником информации).

23 августа 2011 г. 14:57 пользователь Yaroslav Korshak
<ykor...@gmail.com> написал:

Oleg Alistratov

unread,
Aug 23, 2011, 8:59:05 AM8/23/11
to kiev-perl-...@googlegroups.com, Denis Zhdanov

On 23.08.2011 15:43, Denis Zhdanov wrote:

> О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ - О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ #/usr/bin/env perl -d О©╫О©╫О©╫О©╫О©╫О©╫.

О©╫О©╫О©╫, О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫. О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫
О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.

О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫

perl -w

О©╫О©╫

use warnings;

О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫

use common::sense;


--
О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫

Konstantin Cherednichenko

unread,
Aug 23, 2011, 9:36:17 AM8/23/11
to kiev-perl-...@googlegroups.com

2011/8/23 Denis Zhdanov <denis....@gmail.com>

Ну и еще минус env - security issue, в том смысле что злобный юзер
может подсунуть гадость в PATH под именем perl и она запустится вместо
настоящего perl ($PATH как и любая переменная окружения не считается
надежным источником информации).

Это не аргумент. "Злобный юзер" может поменять системный PATH только в случае рута.  

--
Konstantin Cherednichenko
KC439-RIPE, KC96-UANIC

Denis Zhdanov

unread,
Aug 23, 2011, 9:54:24 AM8/23/11
to kiev-perl-...@googlegroups.com
Ну так скрипты не всегда от рута пускаются, даже можно сказать наоборот.
Согласен что для обычного пользователя это не важно, но параноики
негодуют - потеря контроля над запуском скрипта получается.

23 августа 2011 г. 16:36 пользователь Konstantin Cherednichenko

Konstantin Cherednichenko

unread,
Aug 25, 2011, 2:17:35 AM8/25/11
to kiev-perl-...@googlegroups.com
В таком случае пусть параноики сами делают замену с помощью sed... :-)

2011/8/23 Denis Zhdanov <denis....@gmail.com>

Sergiy Borodych

unread,
Aug 25, 2011, 8:46:59 AM8/25/11
to kiev-perl-...@googlegroups.com
О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫!

О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫

#!perl

О©╫ О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ ?


On 08/23/2011 03:43 PM, Denis Zhdanov wrote:
> О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫!
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ http://en.wikipedia.org/wiki/Shebang_(Unix)#Portability
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ OpenServer 5.0.6 О©╫ Unicos 9.0.2 О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ /bin/env О©╫О©╫ О©╫О©╫О©╫ /usr/bin/env - О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫. О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫


> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ - О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ #/usr/bin/env perl -d О©╫О©╫О©╫О©╫О©╫О©╫.

> О©╫О©╫ О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ env - security issue, О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ PATH О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ perl О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ perl ($PATH О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫
> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫).
>
> 23 О©╫О©╫О©╫О©╫О©╫О©╫О©╫ 2011 О©╫. 14:57 О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ Yaroslav Korshak
> <ykor...@gmail.com> О©╫О©╫О©╫О©╫О©╫О©╫О©╫:
>> Hello bor
>>
>> perlbrew О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ perl О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫.
>> О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ #!/usr/bin/perl О©╫О©╫ О©╫О©╫О©╫


>> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.

>> О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ Module::Starter,
>> О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫:
>> cpanm О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ perl-5.14.1, О©╫ module-starter
>> (О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫ О©╫О©╫ perl-5.14.1) О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ perl-5.10.1
>> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫, О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫, О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫
>> /usr/bin/env О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫.
>> О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫.


>>
>> --
>> Regards
>> yko
>>
>> On 08/23/2011 02:39 PM, Sergiy Borodych wrote:
>>>
>>> Hello mongers,
>>>

>>> О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫

>>> #!/usr/bin/env perl


>>> О©╫О©╫О©╫О©╫О©╫О©╫

>>> #!/usr/bin/perl


>>>
>>> О©╫О©╫О©╫О©╫О©╫ О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫:

>>> О©╫ О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫ ?
>>> О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫ О©╫О©╫О©╫О©╫О©╫ О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫О©╫ ?
>>

Konstantin Cherednichenko

unread,
Aug 25, 2011, 9:22:38 AM8/25/11
to kiev-perl-...@googlegroups.com
никак. Во FreeBSD и Mac OS X такое работать не будет. в линукс тоже скорее всего

2011/8/25 Sergiy Borodych <sergiy....@gmail.com>
Всем спасибо за ответы!

Но вот увидел и такое

#!perl

А как у такого варианта с переносимостю ?



On 08/23/2011 03:43 PM, Denis Zhdanov wrote:
>> --
>> Regards
>> yko
>>
>> On 08/23/2011 02:39 PM, Sergiy Borodych wrote:
>>>
>>> Hello mongers,
>>>
>>> Последнее время замечаю тенденцию писать в начале скрипта
>>> #!/usr/bin/env perl
>>> вместо
>>> #!/usr/bin/perl
>>>
>>> Хотел бы спросить у уважаемого сообщества:
>>> А с чем это связано ?
>>> Какие плюсы в таком написании ?
>>

Sergiy Borodych

unread,
Aug 25, 2011, 10:05:58 AM8/25/11
to kiev-perl-...@googlegroups.com
Зачем тогда здесь

http://cpansearch.perl.org/src/GAAS/libwww-perl-6.02/Makefile.PL

так ?

Просто чтоб указать -w ?

2011/8/25 Konstantin Cherednichenko <dshadow...@gmail.com>:

--
Sergiy Borodych
http://bor.org.ua

Konstantin Cherednichenko

unread,
Aug 25, 2011, 10:10:32 AM8/25/11
to kiev-perl-...@googlegroups.com
А вот зачем! :-)
You install libwww-perl using the normal perl module distribution drill:

   perl Makefile.PL
   make
   make test
   make install

2011/8/25 Sergiy Borodych <sergiy....@gmail.com>
Reply all
Reply to author
Forward
0 new messages