Um uso comum é o lançamento de intérpretes, fazendo uso do fato de que env pesquisará o $ PATH para o comando que é solicitado a ser iniciado. Já que a linha shebang requer um caminho absoluto a ser especificado, e desde a localização de vários intérpretes ( perl , bash , python ) pode variar muito , é comum usar:
#!/usr/bin/env perl
em vez de tentar adivinhar se é /bin/perl , /usr/bin/perl , /usr/local/bin/perl , /usr/local/pkg/perl , /fileserver/usr/bin/perl ou /home/MrDaniel/usr/bin/perl no sistema do usuário ...
Por outro lado, env está quase sempre em /usr/bin/env . (Exceto nos casos em que não é; alguns sistemas podem usar /bin/env , mas essa é uma ocasião bastante rara e só acontece em sistemas não-Linux.)
Outro uso é limpar rapidamente o ambiente usando a opção -i . Em initscripts legados do sysvinit , que são apenas scripts de shell geralmente iniciados diretamente pelo administrador de sistemas, é necessário certificar-se de que o ambiente do administrador não se propaga para o daemon iniciado. (Por exemplo, um rogue $TZ ou $HOME pode tornar as coisas realmente confusas - especialmente com certos daemons do cron).
Neste caso, o initscript prepara um ambiente curto e inicia o daemon usando algo como:
env -i "PATH=/bin:/usr/bin" "LANG=$system_locale" /usr/sbin/crond