Voici une liste de ce que chaque fichier ne devrait / devrait pas contenir, à mon avis:
.zshenv
[Lire à chaque fois]
Ce fichier est toujours recherché, il doit donc définir des variables d’environnement qui doivent être mises à jour fréquemment . PATH (ou son chemin de contrepartie associé ) est un bon exemple car vous ne voulez probablement pas redémarrer votre session entière pour la mettre à jour. En le définissant dans ce fichier, la réouverture d'un émulateur de terminal démarrera une nouvelle instance de Zsh avec la valeur PATH mise à jour.
Mais sachez que ce fichier est lu même lorsque Zsh est lancé pour exécuter une seule commande (avec l' option -c ), même avec un autre outil comme make
. Vous devez faire très attention de ne pas modifier le comportement par défaut des commandes standard, car certains outils pourraient en être brisés (en définissant des alias, par exemple).
.zprofile
[Lu au login]
Personnellement, je traite ce fichier comme .zshenv
s'il ne comportait que des commandes et des variables ne devant être définies qu'une seule fois ou n'ayant pas besoin d'être mises à jour fréquemment :
- variables d'environnement pour configurer les outils (indicateurs de compilation, emplacement du dossier de données, etc.)
- configuration qui exécute des commandes (comme
SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"
), car l’exécution peut prendre un certain temps.
Si vous modifiez ce fichier, vous pouvez appliquer les mises à jour de la configuration en exécutant un shell de connexion:
exec zsh --login
.zshrc
[Lire quand interactive]
Je mets ici tout ce qui est nécessaire uniquement pour une utilisation interactive :
- rapide,
- achèvement de la commande,
- correction de commande,
- suggestion de commande,
- mise en évidence des commandes,
- coloration de sortie,
- des alias,
- raccourcis clavier,
- gestion de l'historique des commandes,
- autres outils interactifs divers (auto_cd, manydots-magic) ...
.zlogin
[Lu au login]
Ce fichier est comme .zprofile
, mais est lu après .zshrc
. Vous pouvez considérer que le shell est entièrement configuré au moment de l’exécution de .zlogin.
Je l’utilise donc pour lancer des commandes externes qui ne modifient pas les comportements du shell (par exemple, un gestionnaire de connexion).
.zlogout
[Lire à la déconnexion] [Dans le shell de connexion]
Ici, vous pouvez effacer votre terminal ou toute autre ressource configurée lors de la connexion.
Comment je choisis où mettre un paramètre
- si cela est nécessaire pour une commande exécutée de manière non interactive :
.zshenv
- si elle doit être mise à jour sur chaque nouveau shell :
.zshenv
- s'il exécute une commande qui peut prendre un certain temps :
.zprofile
- si elle est liée à une utilisation interactive :
.zshrc
- s'il s'agit d'une commande à exécuter lorsque le shell est complètement configuré :
.zlogin
- si elle libère une ressource acquise lors de la connexion:
.zlogout