NEDEN ** giriş yapın ** ** giriş yapın ** olmayan bir kabuk?


24

* Nix sistemindeki dotfiles hakkında temel bir anlayışa sahibim . Ancak Login Shell ile Login olmayan Shell arasındaki bu fark konusunda hala kafam karışık.

Bir kaç farklı cevap (çoklu kopyalar dahil), şu madde işaretlerine zaten cevap verdi:

  • Bir giriş veya giriş olmayan bir kabuk nasıl çağırılır
  • Bir giriş veya giriş olmayan bir kabuk nasıl tespit edilir
  • Hangi başlangıç ​​dosyalarının giriş yapmış veya girişsiz bir kabuk tarafından tüketileceği
  • man bashDaha fazla ayrıntı için belgelere bakın (ör. )

Cevapların söylemediği şey (ve hala kafamı karıştırdığım bir şey):

  • Nedir kullanım durumu a giriş veya olmayan giriş kabuğu? (örneğin, sadece yapılandırılmış zshrciçin zshve o en kişisel dev gereksinimi için yeterlidir, ben ne kadar basit olarak değil biliyorum vimrciçin vim)

  • Nedir sebebi bir kullanma giriş aşkın dışı giriş (farklı başlangıç dosyaları ve yaşam döngüleri tüketen yanı sıra) kabuk?

Yanıtlar:


15

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 umaskgiriş kabuğundan, vs.). Ve buna göre, fikir, giriş başlatma dosyalarının ( .login,, .profilevb.) Kalıtsal ayarları yapması gerektiği ve .bashrc(veya ne kullanıyorsanız kullanın) kalıtılmayan ( set,, shoptdış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 dfveya 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 .loginda .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/shyüzden bazı sistemlerde, benim komut dosyaları ile çalışır, dashve diğerleri onlar çalıştırmak bashı çalıştırmak yılda. POSIX modunda Birkaç kez csh/ tcsho ş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. bashve zsh), kalıplarınız farklı olabilir. Birincil kabuğunuz (tanımlandığı gibi /etc/passwd) ise bash, bir zshgiriş kabuğu çağırmak isteyebilirsiniz ve ardından belki de buna bağlı bazı etkileşimli giriş olmayan zshkabukları ç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 .loginveya.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.

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.