Обычно используется для запуска интерпретаторов, используя тот факт, что env
будет искать $ PATH для команды, которую ей говорят запустить. Так как притон линия требуется абсолютный путь будет указано, и так как местоположение различных переводчиков perl
bash
python
может отличаться много, он является общим для использования:
#!/usr/bin/env perl
вместо того, чтобы пытаться угадать, является ли это /bin/perl
, /usr/bin/perl
, /usr/local/bin/perl
, /usr/local/pkg/perl
, /fileserver/usr/bin/perl
или /home/MrDaniel/usr/bin/perl
в системе пользователя ...
С другой стороны, env
почти всегда находится в /usr/bin/env
. (За исключением случаев, когда это не так; некоторые системы могут использовать /bin/env
, но это довольно редкий случай и происходит только в системах, отличных от Linux.)
Другой способ - быстро очистить среду с помощью опции -i
. В унаследованных сценариях sysvinit , которые являются просто сценариями оболочки, часто запускаемыми непосредственно системным администратором, необходимо убедиться, что среда администратора не распространяется на запущенный демон. (Например, мошеннические $TZ
или $HOME
могут привести к путанице, особенно с определенными демонами cron .)
В этом случае initscript готовит короткую среду и запускает демон, используя что-то вроде:
env -i "PATH=/bin:/usr/bin" "LANG=$system_locale" /usr/sbin/crond