Yanıtlar:
Çağrılmaz bash_profile
, ancak global bash yapılandırması için standart yer /etc/bash.bashrc
. /etc/profile
Kabuk bash ise bunu aramak olağandır . Örneğin, benim /etc/profile
var:
if [ "$PS1" ]; then
if [ "$BASH" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1=’0
if [ ‐f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
fi
fi
Kullanım açısından, /etc/profile
Bourne uyumlu tüm mermiler (sh, bash, ksh, vb.) İçin sistem genelinde yapılandırma sağlar. /etc/bash_profile
Profil dosyasının amacı giriş kabukları için davranışı kontrol etmek olduğundan normalde eşdeğer bir gereksinim yoktur . Normalde orada yapmak istediğiniz herhangi bir şey bash'a özgü olmayacaktır. /etc/bash.bashrc
bash'a özgüdür ve hem giriş hem de giriş dışı mermiler için çalıştırılır.
Daha da karmaşık hale getirmek için, OS X'in bir tane bile yok gibi görünüyor /etc/bash.bashrc
. Bu muhtemelen OS X'teki Terminallerin varsayılan olarak giriş kabukları olarak çalışmasıyla ilgilidir , bu nedenle ayrım kaybolur:
Terminal penceresi yönergelerine bir istisna, Mac OS X'in her yeni terminal penceresi için varsayılan olarak bir oturum açma kabuğu çalıştıran ve .bashrc yerine .bash_profile öğesini çağıran Terminal.app uygulamasıdır. Diğer GUI terminal emülatörleri aynı şeyi yapabilir, ancak çoğu bunu yapmaz.
OS X kullanmıyorum, bu yüzden bilgimin kapsamı burada bitiyor.
/etc/profile
Ubuntu 12.04'teki varsayılandan . Biri /etc/profile
yalnızca bash altında yürütülen ve başka bir sh uyumlu kabuk olmayan bir tane isterse ne önerirsiniz ?
/etc/profile
benim sistem için dosya okur üstünde bir yorum içeriyor: # System-wide .profile for sh(1)
. Bunun anlamı mı profile
is sh
özgü? Does sh
nasılsa önce çalıştırmak bash
?
sh
bir alt kümesidir bash
. /etc/profile
için yürütülür sh
, bash
ve diğer tüm Bourne uyumlu kabuklar.
/etc/bashrc
değil , çağrıldığı anlaşılıyor /etc/bash.bashrc
. Ayrıca koşmak /bin/sh
gibi görünüyor .
/etc/profile
küreseldir bash_profile
. Bash'a özgü bir dosya yok, bash tüm Bourne tarzı kabuk tarafından okunan standart dosyayı okur. Sistem çapında ortam değişkenlerini buradan ayarlayabilirsiniz.
Bkz . Tüm kabuklar tarafından okunan ".bashrc" eşdeğeri bir dosya var mı? bash'ın ortak başlangıç dosyalarına genel bir bakış için.
Bu yüklenmez /etc/profile
, bu yüzden hiçbir şey /etc/profile.d/
yüklenmez (giriş kabuklarının aksine, sonuna bakın).
Bunun için global dosya / etc / bashrc veya /etc/bash.bashrc'dir ( -DSYS_BASHRC=
derleme zamanında ayarlanan bayrağa bağlı olarak ):
# System-wide .bashrc file for interactive bash(1) shells.
if [ -z "$PS1" ]; then
return
fi
PS1='\h:\W \u\$ '
# Make bash check its window size after a process completes
shopt -s checkwinsize
[ -r "/etc/bashrc_$TERM_PROGRAM" ] && . "/etc/bashrc_$TERM_PROGRAM"
Çatışmalardan kaçınmak için genellikle bu dosyayı olduğu gibi bırakmak (mümkün olduğunca) iyi bir fikirdir. Kullandığım strateji, giriş (/ etc / profile) kabuklarının kullandığı stratejiye benziyor.
Benim stratejim yukarıdaki dosyaya bir yükleyici eklemek:
# Add new directory analog to /etc/profile.d
mkdir /etc/bashrc.d
# Write the loader to /etc/bash.bashrc (it might be /etc/bashrc on as mentioned above)
cat >> /etc/bash.bashrc << 'EOF'
# I appended this: Load scripts from /etc/bashrc.d
if test -d /etc/bashrc.d; then
for script in /etc/bashrc.d/*.sh; do
test -r "$script" && . "$script"
done
unset item
fi
EOF
Şimdi /etc/bashrc.d dizinine yeni .shfiles koyarak global interaktif (bash) kabuk dosyasına kolayca n özelleştirme ekleyebilirim.
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
Bunu bu tek astarla yapabilirsiniz:
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
Bunu okuduktan sonra ikna olmuyorsanız, kendinizi ikna etmek için bunu yapın:
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
Yeni bir terminal öykünücüsü açın ve grep kullanarak kullanıcı dizininizde "the" gibi bazı yaygın kelimeleri arayın
grep -r 'the'
Hiçbir şey renklendirilmemelidir. CTRLALTF1'i yaparak sanal bir konsolda da aynı şeyi yapın (X sunucunuzun büyük olasılıkla CTRLALTF7'de çalıştığını unutmayın, böylece geri dönebilirsiniz. Unutursanız, örneğin masaüstü yöneticinizi yeniden başlatın)
grep -r 'the'
istendiği gibi renkli sonuçlar verecektir.
Hiçbir şey renklendirilmemelidir. Aynı şeyi sanal bir konsolda yaparak yapın CTRLALTF1(X sunucunuzun muhtemelen CTRLALTF7geri dönebilmeniz için çalıştığını unutmayın. Unutursanız, örneğin masaüstü yöneticinizi yeniden başlatın)
grep -r 'the'
istendiği gibi renkli sonuçlar verecektir.
Bir giriş kabuğu, bir makineyi önyükleme veya sanal konsolları geçiş yaptığınızda ne olsun CTRLALTF1aracılığıyla FNthsanal konsola.
Giriş Kabuğu dosyaları /etc/profile
yüklerken yüklenir /etc/profile.d/*.sh
.
/etc/bash.bashrc
Etkileşimli olmayan bir kabuktan okuma ./etc/profile
etkileşimli olmayan kabuk tarafından okunabilir. Bkz Girişi Shell ve Non-Girişi Shell arasındaki Fark?