Linux'ta ve bildiğim kadarıyla, tüm Unix sistemleri, terminal emülatörleri, varsayılan olarak etkileşimli, giriş yapmayan kabuklar çalıştırıyor. Bu, bash için başlatılan kabuğun:
Oturum açma kabuğu olmayan etkileşimli bir kabuk başlatıldığında, bash komutları okur ve bunları çalıştırır
/etc/bash.bashrcve~/.bashrcbu dosyalar varsa. Bu--norcseçenek kullanılarak engellenebilir .
--rcfileDosya seçeneği okuyup yerine dosyadan komutları yürütmek için bash zorlar/etc/bash.bashrcve~/.bashrc.
Ve giriş kabukları için:
Bash etkileşimli bir giriş kabuğu veya
--loginseçenekle etkileşimli olmayan bir kabuk olarak çağrıldığında , ilk önce dosyadan komutları okur ve yürütür/etc/profile, eğer o dosya varsa. 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ı.
--noprofileKabuk bu davranışı engellemek için başlatıldığında seçenek kullanılan olabilir.
Bununla birlikte, OSX’te, varsayılan terminal (bash), varsayılan terminalde (Terminal.app) fiilen kaynak ~/.bash_profileveya ~.profilevb. Başlatılır. Diğer bir deyişle, bir giriş kabuğu gibi davranır.
Ana soru : Varsayılan etkileşimli kabuk neden OSX'te bir giriş kabuğu? OSX neden bunu yapmayı seçti? Bu, kabuk değiştiren şeylerle ilgili tüm talimatların / öğreticilerin, değiştirilen şeylerden bahseden ~/.bashrcOSX'te başarısız olacağı veya bunun tersi anlamına gelir ~/.profile. Yine de, birçok suçlama Apple'da seviyelendirilebilir olsa da, beceriksiz veya aptalca şeytanları işe almak bunlardan biri değildir. Muhtemelen, bunun için iyi bir nedenleri vardı, öyleyse neden?
Subquestions: Terminal.app aslında etkileşimli bir giriş kabuğu çalıştırıyor mu veya bash'ın davranışını değiştirdi mi? Bu Terminal.app'a özgü mü yoksa terminal emülatöründen bağımsız mı?