Bashのマニュアルは次のように言います:
ログインシェルの引数を持たない最初の文字は「-」または--loginオプションで呼び出されます。
これは、起動方法に応じてログインシェルを定義します。
または、目的の目的に応じてログインシェルを定義できますか?
たとえば、ログインシェルをユーザーがログインする必要があるシェルとして定義できますか?たとえば、ログインではなく対話型 bash シェルで create bash login シェルを実行すると、bash --login
ログインする必要はありません。私のユーザー名とパスワードが暗黙的にキャッシュされて再利用されるのですか、それともログイン操作を実行しないのですか?
ログインを実行するためにログインシェルが必ずしも必要ではない場合、その意図された目的は何であり、ログインシェルと非ログインシェルを区別する機能がありますか?
ありがとうございます。
答え1
ログインはシェル以外のツールで処理されます。例えば login
独自またはデスクトップマネージャ(PAMや他のさまざまなツールの助けを借りて)。
これ目的ログインシェルの役割は、ログインを処理するのではなく、ログインセッションの最初のシェルとして適切に機能することです。これは、主にログインセッションごとに一度だけ処理する必要がある開始ファイルを処理し、ログインセッションを不正アクセスから保護することを意味します。特定のシステム機能(特にジョブの一時停止)と対話するために必要です。
少なくともログインシェルの詳細バッシュで実装、以下に説明するように:
- ログインシェルはのコマンドを処理してから、およびその間で見つかった最初の
/etc/profile
ファイルを処理します(次に始まる非対話型ログインシェルではない場合)。~/.bash_profile
~/.bash_login
~/.profile
いいえオプション--login
); logout
代わりにログインシェルの実行を終了してくださいexit
。- ログインシェルを終了すると、すべての操作が一時停止します。
- ログインシェルは一時停止できません。
- ログインシェルセット
HOME
変数(POSIXly正しいモードを除く) - ログインシェル
login_shell
シェルオプションを設定します。
答え2
あなたは自分の質問に答えました。
bash --login
create bash login shellを実行するときにログインする必要はありません。
これは、ユーザーがログインしており、ユーザー権限でアプリケーションを起動できる環境がすでにあることを意味します。
幸い、ログイン後にアプリを実行するたびにパスワードを入力する必要はありません。
主な違いはオプションを使用する-l
ことです--login
。
[bash] まず、/etc/profile および ~/.profile のコマンドを順次読み込み、実行しようとします。
(から抜粋man bash
)。
目的は/etc/profile
およびから利益を得ることです~/.profile
。bash
ユーザーセッションを処理するコンポーネントではなくシェルです。PAM
ログイン/パスワードであなたを識別する役割を担うLinuxコンポーネント。