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