Respostas:
Parece que você pode prefixar seu script com o env -i
qual limpará o ambiente antes de executar o script:
env -i sh test.sh
De man env
:
-i, --ignore-environment
start with an empty environment
Não sei por que você gostaria de fazer isso ...
chsh ...
. Se eu abrir uma janela de terminal e executar zsh
ou fish
(com ou sem -l
, não importa), poluirá meu ambiente com todos os tipos de variáveis do shell Eu comecei fazendo o truque com. env -c
resolve este problema para mim que eu faço. env -i TERM=xterm-256color $(which fish)
.
Uma possibilidade (embora pareça bastante feia):
exec -c $SCRIPT
iniciará $ SCRIPT com um ambiente vazio. (consulte a man bash
pesquisa exec \[-cl\]
).
Tanto quanto eu sei, a resposta é "Não". Você pode substituir variáveis ambientais no próprio script. O valor da variável de ambiente deve voltar ao valor original assim que o script terminar de ser executado. Você provavelmente precisará executar o script como um processo filho: $ this.script.sh e para evitar ter que sair do shell sempre que executar o script para redefinir as variáveis de ambiente para o valor original.
Editar:
De um pôster anterior, parece que estou errado sobre isso não ser possível.