Comment réinitialiser un environnement shell?


25

Ce problème me dérange depuis un certain temps, et bien que je pense avoir trouvé ma réponse via EnvWatcher , malheureusement, cela ne fonctionne que sur Bash. Et j'utilise zsh.

Je voudrais reproduire les choses que fait env-watcher, dans une moindre mesure peut-être, mais j'ai besoin de savoir s'il existe une commande par laquelle je pourrais réinitialiser un shell à son stade de démarrage propre.

Comme par exemple, j'aimerais avoir le workflow suivant.

source some-functions
alias another-thing
export SVN_EDITOR=vim
RESET-ZSH # none of the above are valid any more

Existe-t-il une telle possibilité intégrée ou suis-je en train de chasser les papillons?

Réponses:


32

Vous pourriez juste exec zsh, ce qui vous donnera un nouveau zsh et réexécutera les fonctions init. Notez que vous auriez besoin d' exec zsh -lun zsh de connexion pour conserver son statut de "shell de connexion". Je ne sais pas à quel point il préserve l'historique des commandes (cela semble fonctionner pour moi, mais si vous utilisez plusieurs shells dans différents terminaux, vous pourriez obtenir une `` diaphonie '' entre l'historique des deux shells)


4
Cela n'annulerait pas les variables d'environnement exportées, n'est-ce pas? (Bien que ceux qui sont définis par votre fichier init soient réinitialisés.)
— cjm

Probablement pas. Je n'avais pas considéré cet aspect parce que je ne pensais pas aux variables d'environnement comme quelque chose que vous définissez temporairement dans le shell.
— Random832

15

Pour annuler les variables d'environnement exportées, vous pouvez utiliser la envcommande env -i zsh. envexécute la commande donnée en argument et -ilui donne un environnement propre.

En fonction de votre configuration, vous devrez peut-être ajouter -là zsh /  bashafin de charger votre .profile, et vous devrez peut-être également "bootstrap" votre environnement $HOMEafin que le shell sache où trouver vos fichiers de démarrage. Au total, cela ressemble à ceci:

env -i HOME="$HOME" zsh -l

1
Vous pourriez avoir besoin de quelques autres, comme TERMet DISPLAY.
— G-Man dit `` Réintègre Monica '' le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.