env -i somecommand
runs somecommand
em um ambiente vazio. Você pode colocar argumentos depois de somecommand
. Se PATH
for apagado, você precisará especificar o caminho completo para somecommand
. Como alternativa, você pode preservar PATH
ou definir um valor diferente.
env -i PATH="$PATH:/another/directory" somecommand
Se você quiser ter o mesmo ambiente que você teria após o login, preserve apenas algumas variáveis e carregue seu .profile
para definir o restante. Se você usar um shell de login diferente (bash com .bash_profile
, csh com .login
, etc.), adapte-se de acordo.
env -i HOME="$HOME" PATH=/usr/local/bin:/usr/bin:/bin USER="$USER" \
sh -c '. ~/.profile; "$@"' _ somecommand
Como alternativa, você pode preferir remover algumas variáveis do ambiente. env -u VAR1 -u VAR2 somecommand
remove VAR1
e VAR2
do ambiente e executa somecommand
. No Linux, você pode usar env -0 | tr '\nenv | sed 's/=.*//'
' '.\n' | sed 's/=.*//'
para produzir uma lista de variáveis de ambiente com um nome por linha, adequado para filtragem. Em outras variantes unix, %code% faz o mesmo trabalho, com a limitação de encontrar falsos positivos se os valores de algumas variáveis contiverem novas linhas.