Les variables d'environnement qui sont également utilisées par des shells non interactifs (par exemple, un script de shell que vous avez écrit) doivent entrer .zshenv.
Francisco
Est également ~/.zshenvfourni par des shells de connexion? Faut- PATHil y définir?
jordelver
1
PATHest probablement le meilleur exemple d'une variable qui devrait être définie à l'intérieur ~/.zshenv, ce fichier provient de n'importe quelle session zsh (à moins que vous n'utilisiez une option pour la désactiver). Voir man zshpour un examen des fichiers qui proviennent et dans quel ordre.
Francisco
Ok, merci @Francisco, je vais lire la page de manuel.
jordelver
Réponses:
21
Si vous souhaitez que les programmes exécutés à partir de zsh voient la var, exportez-la.
Pour le chemin, vous voulez probablement exporter.
Au lieu de cela, export PATH=/some/pathvous le souhaitez probablement export PATH="$PATH:/some/path", sauf si vous avez l'intention d'effacer complètement le chemin prédéfini du système.
C'est génial merci. Je vais maintenant utiliser l'exportation comme règle générale.
jordelver
21
Demure a déjà répondu à votre question spécifique. Cependant, c'est une zshquestion et environ PATH. Voici donc un autre point: à côté de la variable standard $PATH, il y a aussi $path, qui est un tableau. Ici vous voyez la différence (deux-points ou pas ...):
Les deux variantes sont automatiquement synchronisées. Alors, quel est l'avantage d'utiliser un tableau?
Cette dernière vous permet de déclarer via typeset -U path"ne conserver que la première occurrence de chaque valeur dupliquée" (à partir de man zshbuiltins). Cela signifie que cela garde votre chemin propre, même si vous sourcez successivement votre ~/.zshrc(parce que vous l'avez changé ou autre) et ne l'encombrez pas avec les mêmes valeurs encore et encore.
Merci, c'était en fait une question complémentaire. Je vais chercher à gérer mon chemin en utilisant pathplutôt qu'en PATH.
jordelver
1
Heureux d'entendre car je craignais déjà d'être OT. Btw. un autre avantage que j'ai oublié: vous pouvez facilement parcourir les éléments avec for i ($path) { print $i # or do something else }.
.zshenv
.~/.zshenv
fourni par des shells de connexion? Faut-PATH
il y définir?PATH
est probablement le meilleur exemple d'une variable qui devrait être définie à l'intérieur~/.zshenv
, ce fichier provient de n'importe quelle session zsh (à moins que vous n'utilisiez une option pour la désactiver). Voirman zsh
pour un examen des fichiers qui proviennent et dans quel ordre.Réponses:
Si vous souhaitez que les programmes exécutés à partir de zsh voient la var, exportez-la.
Pour le chemin, vous voulez probablement exporter.
Au lieu de cela,
export PATH=/some/path
vous le souhaitez probablementexport PATH="$PATH:/some/path"
, sauf si vous avez l'intention d'effacer complètement le chemin prédéfini du système.la source
Demure a déjà répondu à votre question spécifique. Cependant, c'est une
zsh
question et environPATH
. Voici donc un autre point: à côté de la variable standard$PATH
, il y a aussi$path
, qui est un tableau. Ici vous voyez la différence (deux-points ou pas ...):Les deux variantes sont automatiquement synchronisées. Alors, quel est l'avantage d'utiliser un tableau?
typeset -U path
"ne conserver que la première occurrence de chaque valeur dupliquée" (à partir deman zshbuiltins
). Cela signifie que cela garde votre chemin propre, même si vous sourcez successivement votre~/.zshrc
(parce que vous l'avez changé ou autre) et ne l'encombrez pas avec les mêmes valeurs encore et encore.path+=(/new/path)
pour ajouter un nouveau répertoire à votre CHEMIN. Pour supprimer un élément, vous devez utiliser quelques astuces, voir par exemple /programming//q/3435355/2037712 ou http://www.zsh.org/mla/users//2005/msg01132.htmlfor i ($path) { print $i # or do something else }
Enfin, voici un extrait de ma config:
la source
path
plutôt qu'enPATH
.for i ($path) { print $i # or do something else }
.