Bash'in önünde tire (-)


14

Bir OS X zaman darbe kabuk incelersek gibi yazma ile olduğu gibi (10.6.4) terminali, echo $0bu gibi kabuğumun önünde bir çizgi, mevcuttur: -bash. Bu çizgi ne anlama geliyor?

Yanıtlar:


14

Bu bash, bir giriş kabuğu olarak çağrıldığı anlamına gelir .


man bash diyor:

Bir giriş kabuğu, sıfır argümanının ilk karakteri a -olan veya --loginseçenekle başlayan bir kabuktur .

Bash, etkileşimli bir giriş kabuğu veya --loginseçenekle etkileşimli olmayan bir kabuk olarak çağrıldığında /etc/profile, bu dosya varsa önce dosyadan komutları okur ve yürütür . Bu dosyayı okuduktan sonra, arar ~/.bash_profile, ~/.bash_loginve ~/.profile, bu sırayla ve okur ve var ve okunabilir olanlarını gelen yürütür komutları. Bu --noprofileseçenek, kabuk bu davranışı engellemek için başlatıldığında kullanılabilir.

Bir oturum açma kabuğu çıktığında, bash dosyadan komutları okur ve yürütür ~/.bash_logout.


Sen bulacaksınız login -pfsizin de psvarsayılan olarak bir giriş kabuğu başlar çıktı.

Koşmayı deneyin login -pfve login -pflfarkı görün. man loginfarkı tanımlar:

-lLogin tarafından yürütülen programa, bunun bir oturum açma oturumu olmadığını söyler (kural olarak, ilk oturum karakteri olarak programa tire ile bir oturum açma sinyali verilir argv[0]; bu seçenek bunu devre dışı bırakır) ve chdir(2)kullanıcının ana dizinine girmesini engeller . Varsayılan, kısa çizgi eklemektir (bu bir oturum oturumudur).


Harika cevap, açıklama ve manalıntılar için teşekkürler
marshall.ward

1
Ubuntu kullanıyorum ve farklı davranışlar görüyorum echo $0: echo $0tarafından çağrılan terminalde yazarsanız ctrl + alt + f1, sonuç -bash; ama ben tarafından çağrılan termianl yazarsanız ctrl + alt + t, sonuç bash(önde gelen çizgi yok). Nedenini açıklayabilir misiniz?
Donmuş Alev

@ frozen-flame Biri bir giriş kabuğu, diğeri değil. OS X Terminali ve Linux terminallerinin bu bağlamda farklı davranışları olduğunu unutmayın.
Daniel Beck

@DanielBeck, diğerinin bir giriş kabuğu olmadığının kanıtı değil. Bash --loginargümanla başlatıldığında , onun değişmez argv[0], ancak bir giriş kabuğu gibi davranır.
Ruslan

@Ruslan Elbette, teoride hala bir giriş kabuğu olabilir. Ama değil. (En azından ben çok
Daniel Beck
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.