ログイン/非ログインシェルの概念は、それぞれ非対話型/対話型シェルの概念と同じですか?
それとも、これらの概念が直交して4つの異なる組み合わせが発生しますか?
私はさまざまな状況で.bashrc
スクリプトがどこから.bash_profile
来るのかを明確に理解しようとしています。
答え1
ログインshell:ログインシェルは特定のユーザーとしてシステムにログインします。これにはユーザー名とパスワードが必要です。ctrl+をクリックして仮想端末にログインaltすると、ログインに成功するとログインシェル(対話型)が表示されます。F1オリジナル文書:
/etc/profile
~/.profile
Bourne互換シェル/etc/profile.d/*
(および~/.bash_profile
バッシュ用/etc/zprofile
~/.zprofile
zshの場合/etc/csh.login
~/.login
cshの場合
ログインしていませんshell:ログインなしで実行できるシェル。これには、現在ログインしているユーザーが必要です。 gnomeでグラフィカル端末を開くと、これは非ログイン(対話型)シェルです。オリジナル文書:
/etc/bashrc
~/.bashrc
バッシュ用
インタラクティブシェル: gnome 端末 (非ログイン) や仮想端末 (ログイン) など、対話式にコマンドを入力または中断できるシェル (ログインまたは非ログイン)。対話型シェルでは、プロンプト変数(
$PS1
)を設定する必要があります。オリジナル文書:/etc/profile
そして~/.profile
/etc/bashrc
または/etc/bash.bashrc
bashの場合
非対話型シェル:自動化されたプロセスで実行できる(サブ)シェルです。呼び出しプロセスがそれを処理しないと、入力または出力は表示されません。呼び出すユーザーはすでにログインしているため、このシェルは通常非ログインシェルです。スクリプトが実行されるシェルは常に非対話型シェルですが、スクリプトはユーザーに値を求めるメッセージを表示して対話型シェルをシミュレートできます。オリジナル文書:
/etc/bashrc
または/etc/bash.bashrc
bashの場合(ただし、ほとんどの場合、スクリプトの先頭には次のものがあります。[ -z "$PS1" ] && return
これは、非対話型シェルの場合は何もしないことを意味します)。- シェルによって異なります。そのうちのいくつかは変数のファイルを読み込みます
$ENV
。