回答:
呼び出されませんbash_profile
が、グローバルbash構成の標準的な場所は/etc/bash.bashrc
です。/etc/profile
シェルがbashの場合、これを呼び出すのが通常です。たとえば、私/etc/profile
には次のものがあります。
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
使用に関しては/etc/profile
、すべてのBourne互換シェル(sh、bash、kshなど)のシステム全体の構成を提供します。/etc/bash_profile
プロファイルファイルの目的はログインシェルの動作を制御することであるため、通常は同等のの必要はありません。通常、そこでやりたいことはbash固有のものにはなりません。/etc/bash.bashrc
bash固有であり、ログインシェルと非ログインシェルの両方で実行されます。
事態をさらに複雑にするために、OS Xにはがありません/etc/bash.bashrc
。これはおそらく、OS Xのターミナルがデフォルトでログインシェルとして実行されることに関連しているため、区別が失われます。
ターミナルウィンドウガイドラインの例外は、Mac OS XのTerminal.appです。これは、新しいターミナルウィンドウごとにデフォルトでログインシェルを実行し、.bashrcではなく.bash_profileを呼び出します。他のGUI端末エミュレーターでも同じことができますが、ほとんどの場合はそうではありません。
私はOS Xを実行していないので、私の知識の範囲はそこで終わります。
/etc/profile
Ubuntu 12.04 のデフォルトからです。/etc/profile
bashの下でのみ実行され、他のsh互換シェルではないものが必要な場合は、代わりに何を提案しますか?
/etc/profile
私のシステムのシステムファイルには、上部に次のコメントが含まれています# System-wide .profile for sh(1)
。これprofile
はsh
特定の意味ですか?sh
何とか前に実行bash
?
sh
サブセットですbash
。/etc/profile
以下のために実行されsh
、bash
および他のすべてのBourne互換シェル。
/etc/bashrc
Macではなく、Macで呼び出されるよう/etc/bash.bashrc
です。また/bin/sh
、同様に実行されるようです。
/etc/profile
はグローバルbash_profile
です。bashに固有のファイルはありません。bashは、すべてのBourneスタイルのシェルによって読み取られる標準ファイルを読み取るだけです。そこでシステム全体の環境変数を設定できます。
すべてのシェルが読み取る「.bashrc」に相当するファイルはありますか?を参照してください。bashの一般的なスタートアップファイルの一般的な概要については。
これは読み込まれ/etc/profile
ないので、何も/etc/profile.d/
読み込まれません(ログインシェルとは異なり、最後を参照してください)。
このためのグローバルファイルは/ etc / bashrcまたは/etc/bash.bashrcです(-DSYS_BASHRC=
コンパイル時に設定されたフラグによって異なります)。
# 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"
通常、競合を避けるために、このファイルを(可能な限り)そのままにしておくことをお勧めします。私が使用する戦略は、ログイン(/ etc / profile)シェルが使用する戦略に似ています。
私の戦略は、上記のファイルにローダーを追加することです。
# 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
これで、新しい.shfilesを/etc/bashrc.dディレクトリに配置することで、グローバルな対話型(bash)シェルファイルにn個のカスタマイズを簡単に追加できます。
/etc/bashrc.d/grep.sh
alias grep='grep --color=auto'
このワンライナーでこれを行うことができます:
printf "alias grep=\'grep --color=auto\'" > /etc/bashrc.d/grep.sh
これを読んだ後、確信が持てない場合は、これを実行して自分を納得させてください。
printf "alias grep=\'grep --color=auto\'" > /etc/profile.d/grep.sh
新しいターミナルエミュレータを開き、grepを使用して「the」などのユーザーディレクトリ内の一般的な単語を検索します。
grep -r 'the'
何も着色しないでください。CTRLALTF1を実行して、仮想コンソールで同じことを行います(XサーバーはおそらくCTRLALTF7で実行されているため、元に戻すことができます。忘れた場合は、たとえばデスクトップマネージャーを再起動してください)
grep -r 'the'
必要に応じて色付きの結果が得られます。
何も着色しないでください。仮想コンソールで同じことを行いCTRLALTF1ます(Xサーバーがおそらく実行されCTRLALTF7ていることを忘れないでください。忘れた場合は、デスクトップマネージャーを再起動するなど)。
grep -r 'the'
必要に応じて色付きの結果が得られます。
ログインシェルは、仮想コンソールをCTRLALTF1介してマシンを起動したり、仮想コンソールを切り替えたりするときに取得するものですFNth。
ログインシェルは/etc/profile
、/etc/profile.d/*.sh
ファイルのロード中にロードされます。
/etc/bash.bashrc
非対話型シェルから読み取らないでください。/etc/profile
非対話型シェルで読み取ることができます。ログインシェルと非ログインシェルの違いを