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.bashrc
ve~/.bashrc
bu dosyalar varsa. Bu--norc
seçenek kullanılarak engellenebilir .
--rcfile
Dosya seçeneği okuyup yerine dosyadan komutları yürütmek için bash zorlar/etc/bash.bashrc
ve~/.bashrc
.
Ve giriş kabukları için:
Bash etkileşimli bir giriş kabuğu veya
--login
seç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_login
ve~/.profile
, bu sırayla ve okur ve var ve okunabilir olanlarını gelen yürütür komutları.
--noprofile
Kabuk 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_profile
veya ~.profile
vb. 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 ~/.bashrc
OSX'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ı?