Yanıtlar:
Normal bir Ubuntu Desktop kullanıcısıysanız, tek giriş kabuğu sizin ... masaüstünüzdür (girmek için bir şifre girin, doğru;)? Teknik olarak bir GUI başlatan bir giriş kabuğu, ancak bu jargonun içine giriyor. Ve evet, içindeki ayarları okuyacak.profile
Siz (normal bir kullanıcı) muhtemelen bir giriş kabuğu gibi görünen bir giriş kabuğu göreceğiniz tek zaman masaüstünüzle ilgili bir sorun yaşıyorsanız ve Ctrl+ Alt+ F1kısayoluyla sanal bir terminale geçiyor olmanızdır .
ssh
(veya yerel olarak bağlanarak ssh localhost
)bash -l
(veya sh -l
)root
ile ilk giriş kabuğu taklitsudo -i
sudo -u username -i
root
root
ile kullanıcı (ve onların şifre)su - username
sudo login
kullanıcıyı değiştirmek için komutu kullanma~/.pam_environment
(sadece değişkenler, orada bash komutu yoktur!), Oturumu kapatın, oturum açın ve masaüstünde hem de gnome-terminalinde sihirli bir şekilde görünen her şeyi izleyin!
/etc/profile
, /etc/profile.d
ya ~/.profile
.
“Teknik jargon” olmadan doğru cevabın verilebileceğini sanmıyorum . Bu soru Google’da “giriş kabuğu nedir” sorgusu için ilk açılan soru olduğundan, aşağıda daha doğru bir cevap veriyorum:
Giriş kabuğu, sadece bir giriş kabuğu olduğu söylenen bir kabuktur. O mu değil kabuk anlatıyor sizi kaydeder genellikle uygulama bir giriş kabuğu olmaya başlattı olsa, giriş aldıktan sonra açılan kabuk anlamına gelir. Kabuğa bir giriş yapması gerektiğini söylemenin aşağıdaki yolları vardır:
-l
veya --login
bildiğini varsayarak argümanı çalıştırıyor (bilmediğim kabukları tanımıyorum -l
, ancak --login
yalnızca birkaç mermi tarafından destekleniyorum).argv[0]
Ayarlanmış olan koşu -{some_string}
bandı (yani, normal argv[0]
veya başka bir dizginin hazırlandığı HYPHEN-MINUS ile ). Bu su ne ssh ve geçerli: su sadece ile çalıştırılabilir çalışır -su
olarak argv[0]
(Merhaba herkes düşünmeye argv[0]
anda çalışan yürütülebilir adı ile bir ilgisi vardır), ssh ile zsh çalışır -zsh
kullanıcı belirledi zaman /bin/zsh
onun kabuk olarak.Kabuğun mantığının kesinlikle size bir şifre sorması veya başka bir yetkilendirme prosedürü gerçekleştirmesi ile hiçbir ilgisi yoktur. Ssh veya login gibi bazı programlar (veya urxvt gibi bazı terminal emülatörleri) argv[0]
, HYPHEN-MINUS ile başlayan, kabuklarını kullanan bir giriş programıdır . Bazı su veya sudo (veya zsh: bkz. -
PRECOMMAND MODİFTERLER in bölümünde açıklanan ön komut değiştiricisine bakınız man zshmisc
) bunu varsayılan olarak yapmaz, ancak söylenebilir. Bazıları, argümanını (ie bash -l
) kullanarak saba bir giriş yapmayı söyleyen tek seçeneğe sahiptir : ssh komut argümanıyla (ssh'ın uzak uçta neyin çalıştırılacağını açıkça söyler).
Genellikle ilk (ekleyerek örneğin kabuk giriş biri olacak belirlemek ve ikinci uygulaması bir giriş kabuğu başlatacak olup olmadığını belirlemek için bazı testler yapmak için kabuk çağırmak için kullanılan programın belgelerine başvurun daha iyidir echo
için .profile
).
argv[0]
birine exec*
doğal ve kaçınılmaz fonksiyonları,: Eğer her zaman tedarik hem argv[0]
aslında komutunu kullanarak çalıştırılacak yolunu ve exec*
hiç yok istesen de işlevleri argv[0]
komut çalıştırmak farklı olmasını. Diğer diller kendi yollarını sunar. Özellikle bash kullanılmasına izin veriyor exec -a new_argv0 bash
, ancak bu, elbette, şu anda çalışan kabuğu değiştirdiğiniz herhangi bir şeyle değiştirecek exec
, bu nedenle (exec -a -zsh zsh)
$0
ve belki başka bir şey de (değişken, ayar vb.) kabuğun mantığının konfigürasyon dosyasında algılanabileceği şekilde ayarlanmıştır, ancak bunu gerçekten kim saptadı ki herhangi bir fark yaratacak mı? Tüm bildiğim bu.