Ne girmeli / olmamalı .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


132

Bunun için çeşitli başlangıç ​​dosyalarına nelerin dahil edilmesi ve nelerin dahil edilmemesi gerektiği hakkında yönergeler arıyorum zsh.

Bu dosyaların temin edilme sırasını ve bunların kaynaklandığı koşulları anlıyorum, ancak her birinde nelerin olması gerektiği hala net değil.


Yanıtlar:


156

Her bir dosyanın neyi içerme eğiliminde olduğuna dair özel olmayan bir liste:

  • Yana .zshenvhep kaynaklı, genellikle diğer programlar için kullanılabilir olmalıdır ihraç değişkenler içeriyor. Örneğin, $PATH, $EDITORve $PAGERsık sık ayarlanır .zshenv. Ayrıca, ayarlayabilirsiniz $ZDOTDIRiçinde .zshenvzsh yapılandırması geri kalanı için alternatif bir konumu belirtmek için.
  • .zshrcetkileşimli kabuk yapılandırması içindir. Burada interaktif kabuk için setoptve unsetoptkomutları ile ilgili seçenekleri belirlersiniz . Ayrıca kabuk modüllerini yükleyebilir, geçmiş seçeneklerinizi ayarlayabilir, isteminizi değiştirebilir, sıfır ve tamamlayıcı ayarları yapabilirsiniz. Ayrıca yalnızca etkileşimli kabukta (örneğin $LS_COLORS) kullanılan değişkenleri de ayarlayabilirsiniz .
  • .zloginbir giriş kabuğu başlangıcında kaynaklanır. Bu dosya genellikle X kullanarak başlatmak için kullanılır startx. Bazı sistemler açılışta X'i başlatır, bu nedenle bu dosya her zaman çok kullanışlı değildir.
  • .zprofileTemel olarak, .zloginhemen önce .zshrckaynaklanmasından, doğrudan yerine kaynaklanmasından başka bir şey değildir. Zsh belgelerine göre, " .zprofileksh hayranları için" .zlogin " in bir alternatifi kastedilmiştir; ikisi istendiğinde kesinlikle yapılabilmesine rağmen birlikte kullanılmaya yönelik değildir."
  • .zlogout bazen terminali temizlemek ve sıfırlamak için kullanılır.

Sen geçmesi gerektiğini rastgele Github kullanıcıların yapılandırma dosyalarına her dosya içermesi gerektiğine dair daha iyi bir fikir edinmek için.


3
Bir netlik noktası olarak, .zlogin, .zshrc'den kaynaklanır ( man zshallayrıntılar için bakınız).
Aaron,

8
Ayarlarken dikkatli olun $PATHyılında .zshenv, çeşitli diğer dosyaları tüm bu değeri geçersiz kılar bu dosyada sonra kaynak vardır. Bkz zsh.org/mla/users/2003/msg00600.html .
Beau Barker,

Nerede olması gerektiği $LANGve $LC_ALLgitmek?
Lenar Hoyt

23
Sadece kendi notlarım / onaylama ve başkasına yardım etmek için, nihai düzen .zshenv→ [ .zprofilegiriş yaparsa] → [ .zshrcetkileşimli ise] → [ .zlogingiriş yaparsa] → [ .zlogoutbazen] şeklindedir.
Gabriel L.

23

İşte bana göre, her dosyanın neyi içermesi / içermemesi gerektiğine dair bir liste:

.zshenv

[Her zaman oku]

Her zaman kaynaklıdır, bu yüzden sık sık güncellenmesi gereken ortam değişkenlerini ayarlamalıdır . PATH (veya ilişkili meslektaşı yolu ) iyi bir örnektir, çünkü güncelleme yapmak için muhtemelen tüm oturumunuzu yeniden başlatmak istemezsiniz. Bu dosyaya ayarlandığında, bir terminal emülatörünü yeniden açmak PATH değeri güncellenerek yeni bir Zsh örneği başlatacak .

Ancak, bu dosyanın Zsh başlatıldığında bile tek bir komut çalıştırmak için ( -c seçeneğiyle), başka bir araç tarafından bile okunabileceğini unutmayınmake . Sen gerektiğini standart komutları varsayılan davranışını değiştirmez çok dikkatli olmak o (örneğin adlar ayarlayarak) bunları kullanmak bazı araçlar ortadan kaldırabileceğinden. Elbette, ne yaptığını bildiğin gibi yasak değil.

.zprofile

[Girişte okuyun]

Kişisel olarak bu dosya gibi davranıyorum, .zshenvancak bir kez ayarlanması gereken veya sık sık güncellenmesi gerekmeyen komutlar ve değişkenler için :

  • araçları yapılandırmak için ortam değişkenleri (derleme bayrakları, veri klasörü konumu vb.)
  • yürütülmesi SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"biraz zaman alabilir gibi komutları (gibi ) yürüten yapılandırma .

Bu dosyayı değiştirirseniz, geçerli kabuğu giriş kabuğu olarak yenisiyle değiştirerek yapılandırma güncellemelerini alabilirsiniz:

exec zsh --login

.zshrc

[İnteraktifken oku]

Buraya sadece etkileşimli kullanım için gereken her şeyi koydum :

  • Komut istemi,
  • komut tamamlama,
  • komut düzeltme,
  • komut önerisi,
  • komut vurgusu,
  • çıktı renklendirmesi,
  • takma adlar,
  • anahtar bağlantıları,
  • tarih yönetimi komutları,
  • diğer çeşitli etkileşimli araçlar (auto_cd, manydots-magic) ...

.zlogin

[Girişte okuyun]

Bu dosya gibidir .zshprofile, ancak sonra okunur .zshrc. Şu anda kabuğun tamamen ayarlandığını düşünüyorum.

Bu nedenle, kabuk davranışlarını değiştirmeyen harici komutları başlatmak için kullanıyorum (örneğin bir oturum açma yöneticisi).

.zlogout

[Çıkışta okuyun] [Giriş kabuğu içinde]

Burada, terminalinizi veya giriş yaptığınız diğer herhangi bir kaynak kurulumunu temizleyebilirsiniz.

Bir ayarı nereye koyacağımı nasıl seçerim

  • etkileşimli olmayan bir komutla çalıştırılması gerekir :.zshenv
  • o edilmelidir yeni kabuk güncellenme :.zshenv
  • tamamlamak için biraz zaman alabilir bir komut çalıştırır :.zprofile
  • o ilişkilidir interaktif kullanım :.zshrc
  • Kabuk tamamen kurulduğunda çalıştırılacak bir komuttur :.zlogin
  • o kaynağı serbest giriş sırasında kazanılmış:.zlogout

0

Koymayın ssh-agentaramaları .zshenv. lessKomutumun artık hiçbir metin dosyasını görüntülememesine neden oldu , muhtemelen seçenekleri Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile) tarafından özelleştirildi .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.