Réponses:
Il semble que vous puissiez préfixer votre script env -iqui 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 zshou fish(avec ou sans, -lpeu importe), il pollue mon environnement avec toutes sortes de variables de la shell je l'ai commencé. Faire le truc avec env -cré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 $SCRIPTdémarrera $ SCRIPT avec un environnement vide. (voir man bashrecherche 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.