Yanıtlar:
.profile
vs. .zprofile
Zsh ~/.zprofile
, ~/.profile
giriş kabuğu olarak çağrıldığında değil çalışır . Bunun nedeni, zsh'nin senaryoları kırmak için standart mermilerle yeterince uyumsuzluğa sahip olmasıdır.
Zsh çalışıyor mu ~/.profile
o kadar çağrılıp çağrılmadığını sh
veya ksh
. Ancak, hedefiniz giriş yaptığınızda bir zsh istemi almaksa, bunun bir yardımı olmaz.
Sen yapabilir /bin/sh
giriş kabuğu ve dahil export SHELL=/bin/zsh
Gözlerinde farklı ~/.profile
. Ardından bir terminal açtığınızda, terminal zsh'yi başlatır (birkaç terminal emülatörü hariç $SHELL
ayara uymaz ). Ancak sh
ssh üzerinden giriş yaptığınızda yine de sahip olacaksınız. Bu exec zsh
, sonuna ekleyerek düzeltilebilir ~/.profile
(bu, çalışan kabuğu zsh ile değiştirir), ancak bunu yalnızca etkileşimli girişler için yapmak için dikkatli olmanız gerekir, ancak ~/.profile
X oturumu başlangıcı gibi diğer komut dosyalarına dahil edilmediğinde (iyi bir Test yoluyla elde edilen ana sürecinin adıdır ps -o comm= $PPID
: o eğer sshd
yoksa su
, o zaman için güvenli exec
).
Hem zsh hem de run ile çalışmak için en kolay çözüm, çalışırken emülasyon kipine giren bir komut ~/.profile
oluşturmaktır :~/.zprofile
~/.profile
emulate sh
. ~/.profile
emulate zsh
Eğer yeterince yeni bir zsh'ınız varsa (Ubuntu'da, bunun anlamı berrak olduğundan beri, sanırım), bunu basitleştirebilirsiniz emulate sh -c '. ~/.profile'
.
.zprofile
vs. .zshrc
Dosya giriş kabukları ~/.profile
tarafından yüklenir . Oturum açma kabuğu, metin modunda, örneğin bir metin konsolunda veya ssh aracılığıyla oturum açtığınızda başlatılan ilk işlemdir. Varsayılan olarak, çoğu Linux makinesinde, giriş kabuğu bash, ancak bunu komutla veya Ubuntu'daki “Kullanıcı Ayarları” gibi başka bir araçla değiştirebilirsiniz. Bir giriş kabuğu olduğunda bash, var olup olmadığını ve zsh sadece okur ( okuma sözdizimi geleneksel bir sh ile tam olarak uyumlu olmadığı için). Çoğu yapılandırmada, bir grafik görüntü yöneticisinde oturum açtığınızda X oturumu başlangıç komut dosyaları tarafından da yüklenir.chsh
~/.bash_profile
~/.profile
~/.zprofile
~/.profile
Bir terminal emülatörü başlatıp bir kabuk istemi aldığınızda veya açıkça bir kabuk başlattığınızda, giriş kabuğu olmayan bir kabuk alırsınız. Yana ~/.profile
(veya ~/.zprofile
) her giriş, yürütmek istediğiniz komutları içindir olmayan bir giriş kabuğu bu dosyayı okumuyor. Bunun yerine, etkileşimli bir zsh başlattığınızda, okur ~/.zshrc
. (Zsh ~/.zshrc
, oturum açma kabukları olmasın, tüm etkileşimli kabuklarda okur ; bash, garip, ~/.bashrc
oturum açma kabuğunda hiç okumaz .)
Genellikle, ~/.profile
ortam değişkeni tanımları içerir ve oturum açtığınızda veya tüm oturum için bir kez çalıştırmak istediğiniz bazı programları başlatabilir; ~/.zshrc
takma ad ve işlev tanımları, kabuk seçeneği ayarları, tamamlama ayarları, bilgi istemi ayarları, tuş bağlamaları gibi her kabuk örneği için yapılması gerekenleri içerir.
~/.profile
zsh
giriş sırasında yüklenmedi .zsh
~/.zprofile
giriş sırasında yükler .zsh
~/.zshrc
Yeni bir terminal oturumu başlatırken yükler .Daha fazla bilgiye mi ihtiyacınız var? Gilles'nun mükemmel cevabına bak!
Gilles'in cevabına ek olarak, son derece zsh versiyonuyla bunu yapabilirsiniz:
[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'
... .profile dosyasını, zsh'ın sh-mode'u etkin kılan kaynak. Ve sadece kaynak sırasında aktif. Bu nedenle kaynak yaptıktan sonra tekrar oynatmak için mevcut seçenek durumunu kaydetmeniz gerekmez.
.zprofile
Uyumlu olduğum .profile
(sadece PATH değişiklikleri içeriyor), bu nedenle sadece ihtiyaç duyuyorum :
ln -s .profile .zprofile
Zsh Ben taraftan sahip belgeler sadece bahseder /etc/profile
ve ~/.profile
oturum açma kabukları için sh / Ksh uyumluluk modunda.
% zsh --version
zsh 4.3.10 …
% cat ~/.profile
echo 'Running ~/.profile...'
Yerel mod giriş kabuğu (argv [0] ile başlar -
) kullanmaz ~/.profile
(yine de kullanır ~/.zprofile
):
% zsh -c 'exec -a -zsh zsh' </dev/null
(çıktı yok)
sh / Ksh uyumluluk modu giriş kabukları .profile dosyalarını kullanır:
% zsh -c 'exec -a -sh zsh' </dev/null
Running ~/.profile...
% zsh -c 'exec -a -ksh zsh' </dev/null
Running ~/.profile...