対話型シェルと非対話型シェルの基本的な違いを理解します。では、ログインシェルと非ログインシェルの違いは何ですか?
aの使用例を挙げることができますか?非ログインインタラクションシェル?
ベストアンサー1
ログインシェルは、対話型セッションにログインしたときにユーザーIDで実行される最初のプロセスです。ログインプロセスは、シェルにログインシェルとして機能するよう指示し、次の規則に従います。通常、-
文字(-bash
通常はbash
)は前に付けられたシェル実行可能ファイルの名前である引数0を渡します。ログインシェルは通常、環境変数の設定などの操作を実行するファイルを読み込みます。既存のBourneシェル/etc/profile
の場合、bash †、zsh †、cshなどがあります。~/.profile
~/.bash_profile
/etc/zprofile
~/.zprofile
/etc/csh.login
~/.login
テキストコンソールにログインする場合、またはSSH経由または次のいずれかをsu -
使用してログインする場合対話型ログインシェル。グラフィックモード(inXディスプレイマネージャ)、ログインシェルはありませんが、セッションマネージャまたはウィンドウマネージャが提供されます。
1つを実行することはほとんどありません。非対話型ログインこれはシェルですが、一部のX設定では、ディスプレイマネージャを使用してログインしたときに設定ファイルを読み取ることができます。他の設定(配布およびディスプレイマネージャによって異なります)は明示的に読み取ったり/etc/profile
読み取っ~/.profile
たりしません。非対話型ログインシェルを取得する別の方法は、端末ではなく標準入力を介して渡されたコマンドを使用してリモートでログインすることです(非対話ssh example.com <my-script-which-is-stored-locally
型、非ログインシェルを実行するのとは対照的)。ssh example.com my-script-which-is-on-the-remote-machine
既存のセッションの端末(screen、X端末、Emacs端末バッファ、他のシェルなど)からシェルを起動すると対話型、非ログインシェル。シェルは、シェル構成ファイル(~/.bashrc
bash呼び出しの場合bash
、zshおよびcsh/etc/zshrc
の場合、POSIX / XSI互換シェルの変数で表されるファイル、たとえば呼び出し時に設定された場合、およびmkshなどの場合)を読み取ることができます。~/.zshrc
/etc/csh.cshrc
~/.cshrc
ENV
sh
$ENV
~/.mkshrc
シェルがコマンドラインに渡されたスクリプトまたはコマンドを実行すると、非対話型、非ログインシェル。これらのシェルは常に実行されます。プログラムが別のプログラムを呼び出すときに実際に別のプログラムを呼び出すシェルで小さなスクリプトを実行するのは非常に一般的です。この場合、一部のシェルは起動ファイルを読み取ります(bashは変数としてマークされたファイルを実行しBASH_ENV
、zshは/etc/zshenv
およびを実行します~/.zshenv
)。しかし、これは危険です。シェルはさまざまなコンテキストで呼び出すことができ、その可能性はほとんどありません。できることではありません。何かを破ってみてください。
†少し単純化しました。詳しくはマニュアルをご覧ください。