Manuel olarak başlatılmadığı sürece Bash .bashrc dosyasını okumaz.


22

bash.bashrcbir terminalden manuel olarak çalıştırmadığım sürece etkileşimli bir terminalden kaynak almayacak bash:

$ bash

veya elle kaynak:

$ source ./.bashrc

veya çalışıyor:

$ st -e bash

İşte bazı yararlı çıktı umarım:

$ echo $TERM
st-256color

$ echo $SHELL
/bin/sh

$ readlink /bin/sh
bash

$ shopt login_shell
login_shell     off

Ben CRUX Linux 3.0 üzerinde ve ben kullanmak dwmve st. Kullanmayı denedim .bash_profileve .profilebaşarılı olamadım.

Herhangi bir fikir?

Yanıtlar:


19

Neden kaynak olsun ki? Doğru koşmuyorsunuz bash:

$ echo $SHELL
/bin/sh

Çoğu modern sistemde sh, temel bir kabuğa bir sembolik bağlantıdır. Örneğin Debian'ımda:

$ ls -l /bin/sh 
lrwxrwxrwx 1 root root 4 Aug  1  2012 /bin/sh -> dash

Sizin durumunuzda, ancak aşağıda açıklandığı gibi sholan bir bağlantıdır :bashman bash

Sh adıyla bash çağrılırsa, sh'ın tarihsel sürümlerinin başlangıç ​​davranışını mümkün olduğunca yakından taklit etmeye çalışır ve POSIX standardına da uyar. [...] sh adında etkileşimli bir kabuk olarak çağrıldığında, bash ENV değişkenini arar, tanımlanmışsa değerini genişletir ve genişletilmiş değeri okumak ve yürütmek için bir dosya adı olarak kullanır. Yana sh olarak çağrılan bir kabuk başka bir başlangıç dosyasından komut okuma ve yürütme çalışmaz , --rcfile seçeneğinin bir etkisi yoktur.

ve

--norc
Do okumak ve sistem çapında başlatma dosyası /etc/bash.bashrc ve kişisel başlatma dosyasını çalıştırmak değil ~ / .bashrc kabuk interaktif ise. Kabuk sh olarak çağrılırsa bu seçenek varsayılan olarak açıktır.

Varsayılan kabuk olduğundan Yani, sh, .bashrcokunamaz. Sadece varsayılan kabuğunuzu kullanarak bash yapın chsh -s /bin/bash.


Teşekkür ederim. Ben o zamandan beri önemli değildi varsayılır /bin/shsivri için /bin/bash. Sanırım bu sorun açıkça /bin/bash, kullanıcı hesabını ilk oluşturduğumda açıkça kabuk atamamasından kaynaklanıyor .
acele

Ayrıca, Debian / Ubuntu geçiş dashiçin /bin/shbaşlangıç süresini azaltmak için çabaların bir parçası olarak. Bu, kullanıcılarımın kabuklarının neden farklı davrandığını sormaya başladığında çok komikti.
kurtm

18

.Bash_profile dosyasında aşağıdakilere sahip olduğunuzdan emin olun:

# .bash_profile

# If .bash_profile exists, bash doesn't read .profile
if [[ -f ~/.profile ]]; then
  . ~/.profile
fi

# If the shell is interactive and .bashrc exists, get the aliases and functions
if [[ $- == *i* && -f ~/.bashrc ]]; then
    . ~/.bashrc
fi

1
@ terdon Cevabınız doğru olanıdır. Cevabım sadece koşuyor olsaydı geçerli olurdu bash. İyi yakaladın, bunu özledim.
Jeight

Bu bash, varsayılan olarak ksh93kullandığı gibi başka bir kabuğun yanına koşarsanız, size birkaç baş ağrısı verebilir .profile.
Kusalananda

~ / .Bash_profile mevcut değilse, onu oluşturabilirsiniz.
Pratik Singhal,

Debain tabanlı işletim sistemlerinde .bashrc, CentOS / Fedora / Mac işletim sistemlerinde .bash_profile
Mitoxys 16:18
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.