Réponses:
Il semble que vous puissiez préfixer votre script env -i
qui effacera l'environnement avant d'exécuter le script:
env -i sh test.sh
De man env
:
-i, --ignore-environment
start with an empty environment
Je ne sais pas pourquoi vous voudriez faire cela cependant ...
chsh ...
. Si j'ouvre simplement une fenêtre de terminal et que j'exécute zsh
ou fish
(avec ou sans, -l
peu importe), il pollue mon environnement avec toutes sortes de variables de la shell je l'ai commencé. Faire le truc avec env -c
résout ce problème pour moi. Je le fais env -i TERM=xterm-256color $(which fish)
.
Une possibilité (bien que cela semble plutôt moche):
exec -c $SCRIPT
démarrera $ SCRIPT avec un environnement vide. (voir man bash
recherche exec \[-cl\]
).
Pour autant que je sache, la réponse est "non". Vous pouvez remplacer les variables d'environnement dans le script lui-même. La valeur de la variable d'environnement doit revenir à sa valeur d'origine une fois le script terminé. Vous devrez probablement exécuter le script en tant que processus enfant: $ this.script.sh & afin d'éviter d'avoir à vous déconnecter de votre shell chaque fois que vous exécutez le script afin de réinitialiser vos variables d'environnement à leur valeur d'origine.
Éditer:
D'après une affiche antérieure, il semblerait que je me trompe sur le fait que ce n'est pas possible.