ログイン/非ログインおよび対話型/非対話型シェル

ログイン/非ログインおよび対話型/非対話型シェル

ログイン/非ログインシェルの概念は、それぞれ非対話型/対話型シェルの概念と同じですか?

それとも、これらの概念が直交して4つの異なる組み合わせが発生しますか?

私はさまざまな状況で.bashrcスクリプトがどこから.bash_profile来るのかを明確に理解しようとしています。

答え1

  • ログインshell:ログインシェルは特定のユーザーとしてシステムにログインします。これにはユーザー名とパスワードが必要です。ctrl+をクリックして仮想端末にログインaltすると、ログインに成功するとログインシェル(対話型)が表示されます。F1オリジナル文書:

    • /etc/profile~/.profileBourne互換シェル/etc/profile.d/*(および
    • ~/.bash_profileバッシュ用
    • /etc/zprofile~/.zprofilezshの場合
    • /etc/csh.login~/.logincshの場合
  • ログインしていませんshell:ログインなしで実行できるシェル。これには、現在ログインしているユーザーが必要です。 gnomeでグラフィカル端末を開くと、これは非ログイン(対話型)シェルです。オリジナル文書:

    • /etc/bashrc~/.bashrcバッシュ用
  • インタラクティブシェル: gnome 端末 (非ログイン) や仮想端末 (ログイン) など、対話式にコマンドを入力または中断できるシェル (ログインまたは非ログイン)。対話型シェルでは、プロンプト変数($PS1)を設定する必要があります。オリジナル文書:

    • /etc/profileそして~/.profile
    • /etc/bashrcまたは/etc/bash.bashrcbashの場合
  • 非対話型シェル:自動化されたプロセスで実行できる(サブ)シェルです。呼び出しプロセスがそれを処理しないと、入力または出力は表示されません。呼び出すユーザーはすでにログインしているため、このシェルは通常非ログインシェルです。スクリプトが実行されるシェルは常に非対話型シェルですが、スクリプトはユーザーに値を求めるメッセージを表示して対話型シェルをシミュレートできます。オリジナル文書:

    • /etc/bashrcまたは/etc/bash.bashrcbashの場合(ただし、ほとんどの場合、スクリプトの先頭には次のものがあります。[ -z "$PS1" ] && returnこれは、非対話型シェルの場合は何もしないことを意味します)。
    • シェルによって異なります。そのうちのいくつかは変数のファイルを読み込みます$ENV

関連情報