Mac OS X neden ~ / .bashrc kaynağını bilmiyor? [çift]


95

Bu sorunun burada zaten bir cevabı var:

Talimatın neden buna benzer olduğunu anlayan bir sürü insan buldum:

Put X to your ~/.bashrc and you can do Y

çalışma

Her zaman Mac OS X'in bash başlangıç ​​dosyalarının (veya Mac'in Bash'inin) giriş kabuğunda veya pencere sisteminden (Mac OS X'teki Terminal uygulamasında olduğu gibi) pencere sisteminden kaynaklanan bir kabuğunda) kaynak sağlamadığı ortaya çıkar.

Neden bu, daha önce çalıştığım Bash ile çalışan tüm Unix benzeri sistemler bunu yaptığında mı?

Not:

Bash'in başlangıç ​​dosyaları hakkında söylediklerini buldum (bu yardımcı olabilir):

Bash etkileşimli bir giriş kabuğu veya --login seçeneğiyle etkileşimli olmayan bir kabuk olarak çağrıldığında, ilk önce bu dosya varsa / etc / profile dosyasındaki komutları okur ve yürütür. Bu dosyayı okuduktan sonra, bu sırayla ~ / .bash_profile, ~ / .bash_login ve ~ / .profile ifadelerini arar ve var olan ve okunabilen ilk komuttan komutları okur ve yürütür. --Noprofile seçeneği, kabuk bu davranışı engellemeye başladığında kullanılabilir.

Kaynak: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files


Ayrıca ~/.bash_profile, idam edildiğini de fark ettim ~/.bashrc. Garip.
igaurav

Yanıtlar:


90

OSX'de terminal, varsayılan olarak bir oturum açma oturumu başlatır, bu nedenle .bash_profile vs. okur. (Adınızı ve parolanızı soran GUI oturum açma işlemi, kabuk komut dosyalarını kullanmaz ve hepsi başlatmadan ve çalışma alanından yapılan hiçbir kabuk başlatmaz)

Diğer Unices'da xterm, varsayılan olarak bir giriş olmayan kabuk çalıştırır, bu nedenle, giriş yaparken size şifrenizi vb. İçeren komut dosyaları olarak .bashrc dosyasını okurlar, giriş oturumunu çağırın ve tüm terminaller bunun alt işlemidir ve kabuk ortamını miras alır.

Bahsettiğiniz GNU belgesinden

Etkileşimli bir giriş yapmayan kabuk olarak çağrıldı

Oturum açma kabuğu olmayan etkileşimli bir kabuk başlatıldığında, Bash eğer varsa, ~ / .bashrc komutlarını okur ve yürütür. Bu --norc seçeneği kullanılarak engellenebilir. --Rcfile dosyası seçeneği, Bash'i ~ / .bashrc yerine dosyadan komutları okuması ve yürütmesi için zorlar.

Bu nedenle, genellikle, ~ / .bash_profile dosyanızın satırını içerir.

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi 

oturum açma işlemine özgü başlatmalardan sonra (veya öncesi).


7
Unicies = Unixler?
Paul Brewczynski

8
Eh Unices Demek istediğim - Okulda Latince'yi
eğildim

8
... ve 3. form "Unixen" (Unices'i tercih
etsem de

7
ve dördüncü "Tekboynuzlar" ...
tink

8
boş formunu, yani "hadımları"
unutamayalım

19

bashsadece giriş yapmayan kabuklar .bashrciçin okur :

Giriş kabuğu olmayan etkileşimli bir kabuk başlatıldığında, bash bu dosya varsa ~ / .bashrc komutlarını okur ve yürütür. Bu --norc seçeneği kullanılarak engellenebilir. --Rcfile dosyası seçeneği bash'ı ~ / .bashrc yerine dosyadan komutları okumaya ve yürütmeye zorlar.

Terminal bashbir giriş kabuğu olarak başladığında ( örneklerin yürütüldüğünü wgörmek bashiçin çalıştırın -bash), .bashrchiçbir zaman otomatik olarak okunmaz.


Yani mesele şu ki, Mac OS X'teki Termina uygulaması her zaman bash "login" örneği oluşturur? Neden ? Eğer gerçekten giriş yapmazsanız. (Daha önce
GUI'den

Neden diğer unix sistemleri ~ / .bashrc dosyasını okuyor?
Paul Brewczynski

3
Buradaki hiç kimse, Apple tarafından verilen tasarım kararlarını açıklayacak konumda değildir. İki tarafı da kolayca tartışabilirim ama bu da yardımcı olmuyor. Yani sadece en iyi seçenek olduğu gibi kabul edin
nohillside

Eh, kabuğu ilk defa sizin gibi çalıştırıyorsunuz, bu yüzden bir giriş yapıyorsunuz, X11 tabanlı
Unices'de

@ PaulBrewczynski Peki Linux .bash_profile'den .bashrc'ye bir çağrı yaptı.
Paul Stelian
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.