非ログインインタラクティブシェル(Ubuntuでターミナルウィンドウを開くなど)がファイルをロードして実行します~/.bashrc
。
シェルスクリプトを実行すると、シェルスクリプトを実行するための非対話型の非ログインシェルプロセスが作成されます。
この非対話型非ログインシェルによってロードされ実行されるファイルはありますか?
編集する:私が使用するシェルはbash
。
答え1
からman bash
、から非対話型シェルはBASH_ENV
環境変数を評価し、その内容を取得します。したがって、この環境変数を使用して、環境設定を含むファイルを指定できます。
デフォルトでは、ファイルはソースとして提供されません。非対話型モデル。
When bash is started non-interactively, to run a shell script, for example, it looks for the variable BASH_ENV
in the environment, expands its value if it appears there, and uses the expanded value as the name of a file
to read and execute. Bash behaves as if the following command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but the value of the PATH variable is not used to search for the filename.
答え2
非対話型の非ログインシェルを使用して一部のシェルスクリプトを実行するときは、システム(3)一部のCプログラムで(またはそれを実行して)スケジュールされたタスク(5))、どのファイルも暗黙的にロードされません。
.
あなたのスクリプトは特定のファイルを使用または取得することができますsource
内蔵ケース。
たぶん、あなたはどんな環境に興味を持つべきかもしれません(参照環境(7))または何ファイル記述子シェルスクリプトの起動方法、親プロセスが何であるかなどによって異なります。ターミナルウィンドウのシェルでスクリプトを実行すると、シェル(特にシェル)から多くのものが継承されます。$PATH
)。ただし、スクリプトを別の方法で実行すると(一部のinitまたはsystemdスクリプトで、cron
またはbatch
....を介して)nohup
状況が変わる可能性があります。
また、見ることができますデーモン(3)、ターミナル(4)....
読むフォーク(2)、実行(2)(両方ともシェルで使用)バウチャー(7)
関連章を読むバッシュ開始ファイル。