Antworten:
Sie können Ihrem Skript anscheinend ein Präfix voranstellen, mit env -i
dem die Umgebung vor dem Ausführen des Skripts gelöscht wird:
env -i sh test.sh
Von man env
:
-i, --ignore-environment
start with an empty environment
Ich bin mir nicht sicher, warum du das tun möchtest ...
chsh ...
. Wenn ich nur ein Terminalfenster öffne und ausführe zsh
oder fish
(mit oder ohne -l
Belang), verschmutzt sie meine Umgebung mit allen Arten von Variablen aus der Shell begann ich es zu tun , den Trick mit. env -c
löst dieses Problem für mich , ich tue. env -i TERM=xterm-256color $(which fish)
.
Eine Möglichkeit (obwohl es ziemlich hässlich aussieht):
exec -c $SCRIPT
startet $ SCRIPT mit einer leeren Umgebung. (siehe man bash
Suche nach exec \[-cl\]
).
Soweit ich weiß, lautet die Antwort "Nein". Sie können Umgebungsvariablen innerhalb des Skripts selbst überschreiben. Der Wert der Umgebungsvariablen sollte auf den ursprünglichen Wert zurückgesetzt werden, sobald das Skript ausgeführt wurde. Sie müssen das Skript wahrscheinlich als untergeordneten Prozess ausführen: $ this.script.sh & um zu vermeiden, dass Sie sich jedes Mal von Ihrer Shell abmelden müssen, wenn Sie das Skript ausführen, um die Umgebungsvariablen auf ihren ursprünglichen Wert zurückzusetzen.
Bearbeiten:
Aus einem früheren Poster geht hervor, dass ich mich irre, dass dies nicht möglich ist.