Ecco un elenco di ciò che ogni file dovrebbe / non dovrebbe contenere, secondo me:
.zshenv
[Leggi ogni volta]
Questo file ha sempre origine, quindi dovrebbe impostare variabili di ambiente che devono essere aggiornate frequentemente . PATH (o il relativo percorso di controparte associato ) è un buon esempio perché probabilmente non si desidera riavviare l'intera sessione per aggiornarla. Impostandolo in quel file, la riapertura di un emulatore di terminale avvierà una nuova istanza Zsh con il valore PATH aggiornato.
Ma tieni presente che questo file viene letto anche quando Zsh viene avviato per eseguire un singolo comando (con l' opzione -c ), anche da un altro strumento come make
. Dovresti stare molto attento a non modificare il comportamento predefinito dei comandi standard perché potrebbe rompere alcuni strumenti (impostando ad esempio gli alias).
.zprofile
[Leggi al login]
Personalmente tratto quel file come .zshenv
ma per comandi e variabili che dovrebbero essere impostati una volta o che non devono essere aggiornati frequentemente :
- variabili d'ambiente per configurare gli strumenti (flag per la compilazione, posizione della cartella dati, ecc.)
- configurazione che esegue comandi (come
SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"
) in quanto potrebbe richiedere del tempo per l'esecuzione.
Se si modifica questo file, è possibile applicare gli aggiornamenti di configurazione eseguendo una shell di accesso:
exec zsh --login
.zshrc
[Leggi quando interattivo]
Ho messo qui tutto il necessario solo per l' uso interattivo :
- richiesta,
- completamento del comando,
- correzione comandi,
- suggerimento di comando,
- evidenziazione del comando,
- colorazione in uscita,
- alias,
- collegamenti chiave,
- gestione della cronologia dei comandi,
- altri strumenti interattivi vari (auto_cd, manydots-magic) ...
.zlogin
[Leggi al login]
Questo file è simile .zprofile
, ma viene letto dopo .zshrc
. Puoi considerare che la shell è completamente configurata al momento dell'esecuzione di .zlogin
Quindi, lo uso per avviare comandi esterni che non modificano i comportamenti della shell (ad esempio un gestore di login).
.zlogout
[Leggi al logout] [All'interno della shell di accesso]
Qui puoi cancellare il tuo terminale o qualsiasi altra risorsa che è stata configurata al login.
Come scelgo dove mettere un'impostazione
- se è necessario per un comando eseguito in modo non interattivo :
.zshenv
- se deve essere aggiornato su ogni nuova shell :
.zshenv
- se esegue un comando che potrebbe richiedere del tempo per il completamento :
.zprofile
- se è correlato all'uso interattivo :
.zshrc
- se si tratta di un comando da eseguire quando la shell è completamente configurata :
.zlogin
- se rilascia una risorsa acquisita all'accesso:
.zlogout