Apa yang harus / tidak boleh masuk dalam .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


133

Saya mencari pedoman tentang apa yang harus dan tidak harus dimasukkan dalam berbagai file startup zsh.

Saya mengerti urutan sumber file-file ini, dan kondisi di mana mereka bersumber, tetapi masih belum jelas bagi saya apa yang harus dimasukkan dalam masing-masing.


Jawaban:


156

Berikut adalah daftar non-eksklusif dari apa yang cenderung berisi setiap file:

  • Karena .zshenvselalu bersumber, sering berisi variabel yang diekspor yang harus tersedia untuk program lain. Sebagai contoh, $PATH, $EDITOR, dan $PAGERsering diatur dalam .zshenv. Juga, Anda dapat mengatur $ZDOTDIRdalam .zshenvmenentukan lokasi alternatif untuk sisa konfigurasi zsh Anda.
  • .zshrcadalah untuk konfigurasi shell interaktif. Anda mengatur opsi untuk shell interaktif di sana dengan setoptdan unsetoptperintah. Anda juga dapat memuat modul shell, mengatur opsi histori Anda, mengubah prompt Anda, mengatur zle dan penyelesaian, dan lain-lain. Anda juga mengatur variabel apa pun yang hanya digunakan dalam shell interaktif (mis $LS_COLORS.).
  • .zloginbersumber pada awal shell login. File ini sering digunakan untuk memulai X menggunakan startx. Beberapa sistem memulai X saat boot, sehingga file ini tidak selalu sangat berguna.
  • .zprofilepada dasarnya sama dengan .zloginkecuali bahwa itu bersumber langsung sebelum .zshrcbersumber, bukan langsung setelah itu. Menurut dokumentasi zsh, " .zprofiledimaksudkan sebagai alternatif untuk` .zlogin 'untuk penggemar ksh; keduanya tidak dimaksudkan untuk digunakan bersama-sama, meskipun ini pasti bisa dilakukan jika diinginkan. "
  • .zlogout kadang-kadang digunakan untuk menghapus dan mengatur ulang terminal.

Anda harus melalui file konfigurasi pengguna Github acak untuk mendapatkan ide yang lebih baik tentang apa yang harus berisi setiap file.


3
Sama seperti poin kejelasan, .zlogin bersumber setelah .zshrc (lihat man zshalldetailnya).
Aaron

8
Sadarilah ketika mengatur $PATHdalam .zshenv, berbagai file lainnya semua bersumber setelah file ini yang akan menimpa nilai ini. Lihat zsh.org/mla/users/2003/msg00600.html .
Beau Barker

Di mana harus $LANGdan $LC_ALLpergi?
Lenar Hoyt

24
Hanya untuk catatan / konfirmasi saya sendiri dan untuk membantu orang lain, urutan utamanya adalah .zshenv→ [ .zprofilejika masuk] → [ .zshrcjika interaktif] → [ .zloginjika masuk] → [ .zlogoutkadang-kadang].
Gabriel L.

24

Di sini daftar apa yang seharusnya / tidak boleh dimuat oleh setiap file, menurut saya:

.zshenv

[Baca setiap waktu]

File ini selalu bersumber, sehingga harus mengatur variabel lingkungan yang perlu sering diperbarui . PATH (atau jalur rekanan yang terkait ) adalah contoh yang baik karena Anda mungkin tidak ingin memulai kembali seluruh sesi Anda untuk membuatnya diperbarui. Dengan mengaturnya di file itu, membuka kembali emulator terminal akan memulai instance Zsh baru dengan nilai PATH diperbarui.

Tetapi perlu diketahui bahwa file ini dibaca bahkan ketika Zsh diluncurkan untuk menjalankan perintah tunggal (dengan opsi -c ), bahkan oleh alat lain seperti make. Anda harus sangat berhati-hati untuk tidak mengubah perilaku default dari perintah standar karena dapat merusak beberapa alat (dengan menetapkan alias misalnya).

.zprofile

[Baca saat login]

Saya pribadi memperlakukan file seperti .zshenvtetapi untuk perintah dan variabel yang harus ditetapkan satu kali atau yang tidak perlu sering diperbarui :

  • variabel lingkungan untuk mengonfigurasi alat (flag untuk kompilasi, lokasi folder data, dll.)
  • konfigurasi yang menjalankan perintah (seperti SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))") karena mungkin membutuhkan waktu untuk dijalankan.

Jika Anda memodifikasi file ini, Anda dapat menerapkan pembaruan konfigurasi dengan menjalankan shell login:

exec zsh --login

.zshrc

[Baca saat interaktif]

Saya taruh di sini semua yang diperlukan hanya untuk penggunaan interaktif :

  • cepat,
  • perintah selesai,
  • koreksi perintah,
  • saran perintah,
  • penyorotan perintah,
  • pewarnaan keluaran,
  • alias,
  • binding utama,
  • perintah manajemen sejarah,
  • alat interaktif lain-lain (auto_cd, manydots-magic) ...

.zlogin

[Baca saat login]

File ini seperti .zprofile, tetapi dibaca setelahnya .zshrc. Anda dapat menganggap shell sudah sepenuhnya diatur pada waktu eksekusi .zlogin

Jadi, saya menggunakannya untuk meluncurkan perintah eksternal yang tidak mengubah perilaku shell (mis. Manajer login).

.zlogout

[Baca saat logout] [Di dalam shell login]

Di sini, Anda dapat menghapus terminal Anda atau sumber daya lainnya yang telah diatur saat login.

Bagaimana saya memilih tempat untuk meletakkan pengaturan

  • jika diperlukan oleh perintah yang dijalankan secara non-interaktif :.zshenv
  • jika harus diperbarui pada setiap shell baru :.zshenv
  • jika menjalankan perintah yang mungkin membutuhkan waktu untuk diselesaikan :.zprofile
  • jika terkait dengan penggunaan interaktif :.zshrc
  • jika itu adalah perintah yang harus dijalankan ketika shell sudah penuh :.zlogin
  • jika melepaskan sumber daya yang diperoleh saat masuk:.zlogout

0

Jangan lakukan ssh-agentpanggilan .zshenv. Itu menyebabkan lessperintah saya untuk tidak menampilkan file teks lagi, mungkin karena opsinya disesuaikan oleh Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile).

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.