Este comando
env name=value name2=value2 program and args
executa o comando program and args
com um ambiente formado pela extensão do ambiente atual com as variáveis de ambiente e valores designados por name=value
e name2=value2
. Se você não incluir argumentos como name=value
, o ambiente atual será transmitido sem modificações.
A principal coisa que acontece com relação aos aliases é que env é um comando externo, portanto, não tem "conhecimento" de aliases: aliases são uma construção de shell que não fazem parte do processo normal modelar e não ter impacto em programas que são executados diretamente por programas não-shell (como env ). env simplesmente passa o program and arguments
para uma chamada exec (como execvp , que pesquisará o PATH por program
).
Basicamente, usar env como esta é uma maneira (principalmente) independente de shell de evitar aliases, funções de shell, comandos internos do shell e quaisquer outros bits de funcionalidade do shell que possam substituir ou substituir comandos argumentos de posição (ou seja, nomes de programas) - a menos que, é claro, env
seja um alias ou uma função shell! Se você estiver preocupado com env
ser um alias, poderá soletrar o caminho completo (por exemplo, /usr/bin/env
, embora possa variar).