/etc/profile
および/etc/bashrc
グローバル環境変数を設定するためのファイルで、おそらくその目的を誤解しているだけかもしれませんが...
グローバルbash_profile
ファイル?
Mac OS Xを使用しています
bash_profile
とは呼ばれませんが、グローバルbash構成の標準的な場所は/etc/bash.bashrc
です。シェルがbashの場合、これを/etc/profile
から呼び出すのが一般的です。たとえば、私の/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
はグローバルですbash_profile
。 bashに固有のファイルはありません。bashは、すべてのBourneスタイルのシェルが読み取った標準ファイルを読み取るだけです。ここで、システム全体の環境変数を設定できます。
Bashの一般的な起動ファイルの一般的な概要については、 「すべてのシェルによって読み取られる「.bashrc」に相当するファイルはありますか? 」を参照してください。
これは/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」のようなユーザーディレクトリで一般的なWordを検索します。
grep -r 'the'
何も着色してはいけません。 CTRLALTF1を実行して、仮想コンソールで同じことを行います(XサーバーはおそらくCTRLALTF7で実行されているため、元に戻すことができます。忘れた場合は、たとえばデスクトップマネージャーを再起動してください)
grep -r 'the'
必要に応じて色付きの結果が得られます。
何も着色してはいけません。仮想コンソールで同じことを行うには CTRLALTF1 (Xサーバーはおそらく CTRLALTF7 元に戻すことができます。忘れた場合は、たとえばデスクトップマネージャーを再起動してください)
grep -r 'the'
必要に応じて色付きの結果が得られます。
ログインシェルは、マシンを起動したり、仮想コンソールを切り替えたりすると得られるものです CTRLALTF1 使って FNth 仮想コンソール。
ログインシェルは/etc/profile
ファイルを読み込み、/etc/profile.d/*.sh
ファイルを読み込みます。