/etc/bash.bashrcはいつ呼び出されますか?

/etc/bash.bashrcはいつ呼び出されますか?

このファイルは正確に何ですか?文書それについての言及はありません。そして自動的に実行してはいけません(4.32014年2月2日バージョン)。

対話型ログインシェルとして呼び出されるか、--loginを使用して呼び出されます。

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

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

対話型の非ログインシェルとして呼び出される

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

したがって、通常 ~/.bash_profile には次の行が含まれます。

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

ログインごとの初期化後(または前)です。

非対話型通貨

Bashが非対話式で始まる場合、たとえばシェルスクリプトを実行するために環境でBASH_ENV変数を見つけてその値が表示されたら、それを拡張し、拡張値をファイルとして読み込み実行する名前です。 Bashは、次のコマンドが実行されたかのように動作します。

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

ただし、PATH変数の値はファイル名を取得するためには使用されません。

前述のように、 --login オプションを使用して非対話型シェルを呼び出すと、Bash はログインシェルの起動ファイルからコマンドを読み込んで実行しようとします。

答え1

Debian でbash README:

  1. 何ですか/etc/bash.bashrc?記録がないようです。

Debian バージョンの bash は、対話型の非ログインであるシェルの前に読み取ることができる特別なオプション ( ) で-DSYS_BASHRCコンパイルされます。bashしたがって、Debian システムでは to が to です。/etc/bash.bashrc~/.bashrc/etc/bash.bashrc~/.bashrc/etc/profile~/.bash_profile

答え2

技術的には、/etc/bash.bashrcすべてのユーザーのための対話型の非ログであるbashシェル呼び出しです。

ただし、通常は呼び出されます/etc/profile(すべてのログインシェルに対して呼び出されます)/etc/bash.bashrc。したがって、/etc/bash.bashrcすべてのログインシェルもこのメソッドを呼び出します。

ただし、最初の行は通常終了を確認します(非対話型の場合)。

したがって、最終的に/etc/bash.bashrcすべての対話型bashシェル(ログインと非ログイン)が効果的に実行されます。システム全体として扱う~/.bashrc

答え3

からman bash

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

参照した文書が最新ではないようです。

関連情報