202 votes

Où placer les assertions de variable $ PATH dans zsh?

J'aime zsh, mais je ne sais pas où placer mon $PATH et d'autres variables affirmations? Je trouve qu'ils sont dispersés entre les fichiers .zshrc .zprofile .bashrc .bash_profile, et parfois doublé.

Je me rends compte que le fait d'avoir quelque chose à l'intérieur de l' bash fichiers n'a pas beaucoup de sens vu que j'en suis à l'aide d' zsh, mais exactement où dois-je placer mon rvm, python, node etc ajouts à ma $PATH?

Est-il un fichier spécifique, je devrais être à l'aide de (c - .zshenv qui ne sont pas actuellement dans mon installation), un de ceux que je suis en train d'utiliser, ou faut-il le même problème?

270voto

simont Points 11362

tl;dr version: utiliser ~/.zshrc, et lire la page de man de comprendre les différences entre ~/.zshrc, ~/.zshenv et ~/.zprofile.


Concernant mon commentaire

Dans mon commentaire joint à la réponse kev a donné, j'ai dit:

Cela semble être incorrect - /etc/profile n'est pas répertorié dans toute zsh la documentation que je peux trouver.

Cela s'avère être partiellement incorrecte: /etc/profile peut être obtenu par zsh. Cependant, cela se produit uniquement si zsh est "invoquée en tant que sh ou ksh"; dans ces modes de compatibilité:

L'habitude zsh démarrage/arrêt scripts ne sont pas exécutés. Shells de Login source /etc/profile suivie par $HOME/.de profil. Si l'ENV variable d'environnement est définie sur l'invocation, $ENV est d'origine après le profil des scripts. La valeur de l'ENV est soumis à un paramètre d'expansion, la substitution de commande, et l'expansion arithmétique avant d'être interprété comme un chemin. [l'homme zshall, la "Compatibilité"].

Le ArchWiki ZSH lien dit:

Lors de la connexion, Zsh sources les fichiers suivants dans cet ordre:
/etc/profile
Ce fichier est utilisé par tous Bourne-compatible obus lors de la connexion

Cette implys qu' /etc/profile est toujours lu par zsh lors de la connexion - je n'ai pas d'expérience avec Arch Linux projet; le wiki peut être correct pour cette distribution, mais il est pas généralement correcte. L'information est incorrecte par rapport à la zsh pages de manuel, et ne semble pas s'appliquer à zsh sur OS X (chemins en $PATH ensemble en /etc/profile ne pas le faire à mon zsh sessions).



Pour répondre à la question:

exactement où dois-je placer mon rvm, python, nœud etc ajouts à ma $PATH?

Généralement, je voudrais exporter mes $PATH de ~/.zshrc, mais il vaut la peine d'avoir une lecture de la zshall page de man, plus précisément le "DÉMARRAGE/ARRÊT FICHIERS de la section" - ~/.zshrc est lire pour interactive coquilles, qui peuvent ou peuvent ne pas convenir à vos besoins si vous souhaitez que l' $PATH pour chaque zsh shell invoquée par vous (les deux interactive et pas, les deux login et pas, etc), alors ~/.zshenv est une meilleure option.

Est-il un fichier spécifique que je devrait utiliser (c'est à dire .zshenv qui n'existent pas actuellement dans mon installation), un de ceux que je suis en train d'utiliser, ou faut-il le même problème?

Il y a un tas de fichiers lus au démarrage (à vérifier liés man pages), et il y a une raison pour que chaque fichier dispose d'un lieu particulier (paramètres pour chaque utilisateur, paramètres spécifiques à l'utilisateur, les paramètres pour les shells de login, les paramètres pour chaque shell, etc).
Ne vous inquiétez pas à propos de ~/.zshenv n'existant pas - si vous en avez besoin, le faire, et il sera lu.

.bashrc et .bash_profile sont pas lus par zsh, sauf si vous explicitement la source de ~/.zshrc ou similaires; la syntaxe entre bash et zsh est pas toujours compatibles. Les deux .bashrc et .bash_profile sont conçus pour bash cadres, zsh paramètres.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X