Загальне використання - це запуск інтерпретаторів, використовуючи той факт, що 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 initscripts , які є просто скриптами оболонки, часто запущеними безпосередньо системою адміністратора, необхідно переконатися, що середовище адміністратора не поширюється на розпочату демон. (Наприклад, шахрай $TZ
чи $HOME
може зробити речі справді заплутаними - особливо це стосується певних демонів cron .)
У цьому випадку initscript готує коротке середовище і запускає демон, використовуючи щось на зразок:
env -i "PATH=/bin:/usr/bin" "LANG=$system_locale" /usr/sbin/crond