Comme je le sais, le nouveau script shell en cours d'exécution hérite de ses variables d'environnement. Existe-t-il un moyen de bloquer cela? (exécution du shell sans héritage de variable)
17
Comme je le sais, le nouveau script shell en cours d'exécution hérite de ses variables d'environnement. Existe-t-il un moyen de bloquer cela? (exécution du shell sans héritage de variable)
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écutezsh
oufish
(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 avecenv -c
résout ce problème pour moi. Je le faisenv -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. (voirman bash
rechercheexec \[-cl\]
).la source
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.
la source