Buradaki fikir, bir kullanıcının ana bilgisayar başına (en fazla) bir giriş kabuğuna sahip olması gerektiğidir. (Belki de şunu söylemeliyim ki, terminal başına ana bilgisayar başına bir oturum açma kabuğu - aynı anda birden fazla terminal aracılığıyla bir ana bilgisayara giriş yapmışsanız, birden fazla oturum açma kabuğunun olmasını beklersiniz.) Bu, genellikle (her zaman?) İlk aldığınız kabuk olur. oturum açtıktan sonra (dolayısıyla adı). Bu nedenle, bu şema giriş başına yalnızca bir kez gerçekleşmesini istediğiniz eylemleri ve her yeni (etkileşimli) kabuk başlattığınızda gerçekleşmesini istediğiniz şeyleri belirlemenizi sağlar.
Normalde, her içeri giriş yaptıktan sonra koşmak diğer kabuk birçok ayarları (çevre değişkenleri, devralır dolayısıyla giriş kabuğunun soyundan (bir çocuğun bir çocuğun çocuk ...) olacak ve umask
giriş kabuğundan, vs.). Ve buna göre, fikir, giriş başlatma dosyalarının ( .login
,, .profile
vb.) Kalıtsal ayarları yapması gerektiği ve .bashrc
(veya ne kullanıyorsanız kullanın) kalıtılmayan ( set
,, shopt
dışa aktarılmayan kabuk değişkenleri ) işlemlerini yapması gerektiğidir. , vb.)
Diğer bir fikir, giriş başlatma dosyalarının (ve sadece onlar) “ağır kaldırma”, yani kaynak yoğun eylemler yapması gerektiğidir. Örneğin, her giriş yaptığınızda arka planda çalışan belirli işlemlere sahip olmak isteyebilirsiniz (ancak bunların yalnızca bir kopyası). Giriş yaparken bazı durum bilgilerinin (örneğin df
veya who
) görüntülenmesini isteyebilirsiniz , ancak her yeni etkileşimli kabuğu başlattığınızda bu olmayabilir. Özellikle bir etkileşime sahipsenizHer giriş yaptığınızda çalıştırmak istediğiniz program / iletişim kutusu (örn. sizden giriş talep eden bir giriş), muhtemelen yeni bir kabuk başlattığınız her seferde çalıştırılmasını istemezsiniz. Aşırı bir örnek olarak, yirmi yıl önce Solaris sizi tek, grafiksel olmayan, penceresiz bir kabukta oturum açtı. (O zamandan beri değiştiğine inanıyorum.) Pencere sistemini başlatmak gibi bir komutla çalışmak ya .login
da .profile
(ya da her neyse) işiydi startx
. (Bu kısmen faydalıydı çünkü birden fazla pencereleme sistemi mevcuttu. Farklı kullanıcılar farklı tercihlere sahipti. Bazı kullanıcılar farklı durumlarda farklı sistemler kullandılar ve .profile
“Bugün hangi pencereyi kullanmak istiyorsunuz?” Sorusunu sorduk. Açıkçası, her yeni bir pencere açtığınızda veya yazmaya başladığınızda bunun çalışmasını istemezsiniz.sh
.
Uzun yıllar bash
dışında başka bir şey kullandığımdan beri uzun zaman oldu. (Örneğin, komut dosyaları yazma #!/bin/sh
yüzden bazı sistemlerde, benim komut dosyaları ile çalışır, dash
ve diğerleri onlar çalıştırmak bash
ı çalıştırmak yılda. POSIX modunda Birkaç kez csh
/ tcsh
o şey nasıl işleyeceğini birkaç dakika görmek için, ya da bir soruya cevap verin.) Günlük olarak birden fazla mermi kullanıyorsanız (örn. bash
ve zsh
), kalıplarınız farklı olabilir. Birincil kabuğunuz (tanımlandığı gibi /etc/passwd
) ise bash
, bir zsh
giriş kabuğu çağırmak isteyebilirsiniz ve ardından belki de buna bağlı bazı etkileşimli giriş olmayan zsh
kabukları çağırmak isteyebilirsiniz. Muhtemelen aynı tipteki başka bir giriş kabuğuna bağlı bir giriş kabuğu kullanmaktan kaçınmalısınız.
Login Shell ve Login olmayan Shell arasındaki fark? OS X Terminal uygulaması bir giriş kabuğu çalıştırır, bu nedenle tipik bir kullanıcının tipik olarak aynı anda çalışan birkaç “giriş kabuğu” olacaktır. Bu yukarıda tarif ettiğim birinden biraz daha farklı bir modeldir ve o ne yaptığını yeniden düşünmek için kullanıcı gerektirebilir onun .login
veya.profile
(veya her neyse) dosya. OS X geliştiricilerinin bu tasarım kararı için gerekçelerini belgelemiş olup olmadıklarını bilmiyorum. Ancak bunun yararlı olacağı bir durum hayal edebiliyorum. Giriş yaptığımda bir avuç kabuk penceresini alışılmış bir şekilde açtığım bir zaman vardı ve hangisini takip etmeme yardım etmek için onları farklı metin ve arka plan renklerine (ANSI kaçış dizileri yazarak) ayarlayacağım. Terminal renkler, çocukların çocukları tarafından miras alınmayan, ancak bir pencerede devam eden bir şeye örnektir. Demek her yeni bir Terminal penceresi başlattığınızda yapmak isteyeceğiniz şey budur, ancak yeni bir etkileşimli kabuk başlattığınız her zaman değil.