Je suis à la recherche de lignes directrices sur ce que l'on devrait et ne devrait pas inclure dans les différents fichiers de démarrage pour zsh
.
Je comprends l'ordre de provenance de ces fichiers et les conditions dans lesquelles ils sont obtenus, mais je ne sais toujours pas ce qui devrait se passer dans chacun d'eux.
Voici une liste non exclusive de ce que chaque fichier a tendance à contenir:
.zshenv
est toujours d'origine, il contient souvent des variables exportées qui devraient être disponibles pour d'autres programmes. Par exemple, $PATH
, $EDITOR
, et $PAGER
sont souvent définis dans .zshenv
. Vous pouvez également définir $ZDOTDIR
dans .zshenv
pour spécifier un autre emplacement pour le reste de votre configuration zsh..zshrc
est pour la configuration interactive du Shell. Vous y définissez les options du shell interactif avec les commandes setopt
et unsetopt
. Vous pouvez également charger des modules Shell, définir vos options d'historique, modifier votre invite, configurer le zle et l'achèvement, etc. Vous définissez également toutes les variables qui ne sont utilisées que dans le shell interactif (par exemple $LS_COLORS
)..zlogin
provient du démarrage d'un shell de connexion. Ce fichier est souvent utilisé pour démarrer X en utilisant startx
. Certains systèmes démarrent X au démarrage, ce fichier n'est donc pas toujours très utile..zprofile
est fondamentalement identique à .zlogin
sauf qu'il provient directement avant .zshrc
provient plutôt que directement après. Selon la documentation de zsh, ".zprofile
est conçu comme une alternative à `.zlogin 'pour les fans de ksh; les deux ne sont pas destinés à être utilisés ensemble, bien que cela puisse certainement être fait si vous le souhaitez. ".zlogout
est parfois utilisé pour effacer et réinitialiser le terminal.Vous devriez passer par les fichiers de configuration d'utilisateurs aléatoires de Github pour avoir une meilleure idée de ce que chaque fichier doit contenir.
Voici une liste de ce que chaque fichier devrait/ne devrait pas contenir, à mon avis:
[Lire à chaque fois]
Ce fichier provient toujours, il doit donc définir des variables d'environnement qui doivent être mis à jour fréquemment. [~ # ~] chemin [~ # ~] (ou son homologue associé chemin ) est un bon exemple car vous ne voulez probablement pas redémarrer toute votre session pour la mettre à jour. En le définissant dans ce fichier, la réouverture d'un émulateur de terminal démarrera une nouvelle instance Zsh avec la valeur [~ # ~] du chemin [~ # ~] 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 par un autre outil comme make
. Vous devez faites très attention à ne pas modifier le comportement par défaut des commandes standard car cela peut casser certains outils (en définissant des alias par exemple).
[Lire à la connexion]
Personnellement, je traite ce fichier comme .zshenv
Mais pour les commandes et les variables qui doivent être définies une fois ou qui n'ont pas besoin d'être mises à jour fréquemment:
SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"
) car son exécution peut prendre un certain temps.Si vous modifiez ce fichier, vous pouvez appliquer les mises à jour de configuration en exécutant un shell de connexion:
exec zsh --login
[Lire lorsqu'il est interactif]
Je mets ici tout ce dont on a besoin uniquement pour tilisation interactive:
[Lire à la connexion]
Ce fichier ressemble à .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
Donc, je l'utilise pour lancer des commandes externes qui ne modifient pas les comportements de Shell (par exemple un gestionnaire de connexion).
[Lire à la déconnexion] [Dans le shell de connexion]
Ici, vous pouvez effacer votre terminal ou toute autre ressource qui a été configurée lors de la connexion.
.zshenv
.zshenv
.zprofile
.zshrc
.zlogin
.zlogout
Ne mettez pas ssh-agent
appelle .zshenv
. Cela a fait que ma commande less
n'affiche plus aucun fichier texte, probablement parce que ses options ont été personnalisées par Prezto (export LESS='-F -g -i -M -R -S -w -X -z-4'
dans .zprofile
).