Il existe une norme telle que définie dans le manuel zsh https://zsh.sourceforge.io/Doc/Release/Files.html#Startup_002fShutdown-Files
Malheureusement, Apple ne les a pas lus entièrement et donc pour macOS il y a une légère différence.
Le fichier dans lequel les variables diffèrent car les fichiers sont lus différemment en fonction de la manière dont le shell est lancé.
Donc, étant donné les fichiers que vous répertoriez
.profile
Rien à voir avec zsh - c'est le seul fichier que sh lit. (bash le lira comme un shell de connexion s'il n'y a pas de .bash_profile
.zshenv
Ce fichier est lu par tous les shells zsh lors de leur démarrage. Donc, toute variable d'environnement commune devrait être ici. Cela inclut $PATH si vous suivez le manuel zsh; cependant Apple n'a pas pris en compte cela et dans /etc/zshrc qui est lu après, ils ajoutent et réorganisent le $PATH
Ce fichier est lu par les scripts.
.zshenv
est sourcé sur toutes les invocations du shell, sauf si l'option -f est définie. Il devrait contenir des commandes pour définir le chemin de recherche des commandes, plus d'autres variables d'environnement importantes. .zshenv
ne doit pas contenir de commandes qui produisent une sortie ou supposent que le shell est attaché à un tty.
.zprofile et .zlogin
Appelé à la connexion - cela se produit sur chaque Terminal sur macOS mais seulement une fois sur les autres Unix
.zlogin
est sourcé dans les shells de connexion. Il devrait contenir des commandes qui ne doivent être exécutées que dans des shells de connexion. .zlogout
est sourcé lorsque les shells de connexion se ferment. .zprofile
est similaire à .zlogin
, sauf qu'il est sourcé avant .zshrc
. .zprofile
est destiné comme une alternative à .zlogin
pour les fans de ksh; les deux ne sont pas censés être utilisés ensemble, bien que cela puisse certainement être fait si désiré.
.zlogin
n'est pas l'endroit pour les définitions d'alias, options, réglages de variables d'environnement, etc.; en règle générale, il ne devrait pas changer l'environnement du shell du tout. Il devrait plutôt être utilisé pour définir le type de terminal et exécuter une série de commandes externes (fortune, msgs, etc).
.zshrc
Ceci est lu dans un shell interactif, c'est-à-dire lorsque vous exécutez le shell pour taper des choses.
.zshrc
est sourcé dans des shells interactifs. Il devrait contenir des commandes pour configurer des alias, des fonctions, des options, des liaisons de touches, etc.
Aussi sur macOS, c'est ici que vous devez modifier le $PATH pour corriger l'ordre modifié par Apple avec /usr/libexec/path_helper