.bash_profileと.bashrcの両方があるのはなぜですか? [コピー]

.bash_profileと.bashrcの両方があるのはなぜですか? [コピー]

.bash_profile.bashrc前者が一般的に後者を取得し、/etc/bashrcログイン時にこれを取得することとその両方を持つことのポイントは何ですか?すべてをすべて入れるとどのような欠点がありますか?.bashrc存在する.bash_config ファイル(またはその逆)1つのログインスクリプトしか受け取りませんか?

ベストアンサー1

.bashrc非ログインシェルでのみ実行され、ログイン.bash_profileシェルでのみ実行されます。

.bashrcこれには通常、エイリアス、関数など、開こうとしているすべてのシェルで設定したい項目が含まれている必要があります。これはシェル固有のセッション項目であり、環境から継承されません。

.bash_profilePATHやその他の環境変数、スタートアッププログラムなど、ログイン時にのみ定義する必要がある項目を含める必要があります。開こうとしているすべてのシェルではなく、一度だけ必要です。ほとんどの場合、.bashrcログインシェルにも何かが必要です。そのため.bash_profileソースもありますが、通常ソースはありません。.bashrc.bashrc.bash_profile

/etc/bashrc/etc/profileシステム管理者またはパッケージ管理者が指定したシステム全体の設定です。以前の/etc/profileすべてのログインシェルから自動的に取得されます~/.bash_profile。ソースがないため、/etc/bashrc必要に応じてソースが必要です。~/.bashrc

これで、これら2つのファイルを1つのファイルにマージし、別のファイルを最初のファイルに関連付けることができます。ただし、PATHや他の変数が比較的定義されていないことを確認する必要があります(例:PATH = $ HOME / bin:$ PATH)。それ以外の場合は、不必要に大きくなります。また、繰り返し始動手順に注意する必要があります。両方を分離する方が簡単です。

Bashのマニュアルページの関連部分:

bashが--loginオプションを使用して対話型ログインシェルまたは非対話型シェルとして呼び出されると、まず/ etc / profileファイル(ファイルがある場合)からコマンドを読み取り、実行します。ファイルを読み込んだら、~/.bash_profile、~/.bash_login、~/.profile を順番に探して、存在して読み取れる最初のファイルからコマンドを読み込んで実行します。この動作は、シェルの起動時に --noprofile オプションを使用して無効にできます。

ログインシェルが終了すると、bashは〜/ .bash_logoutファイル(存在する場合)からコマンドを読み取り、実行します。

ログインシェルではなく対話型シェルを起動すると、bash はファイルが存在する場合は ~/.bashrc からコマンドを読み込み実行します。 --norcオプションを使用してこれを無効にできます。 --rcfile file オプションは、 bash が ~/.bashrc の代わりにファイルからコマンドを読み込んで実行するように強制します。

おすすめ記事