ログインシェルと非ログインシェルの違い

Fumbani Banda 2023年1月30日
  1. UNIX ベースのシステムのシェルとは
  2. UNIX ベースのシステムのログインシェルとは
  3. UNIX ベースのシステムでの非ログインシェルとは何ですか
ログインシェルと非ログインシェルの違い

このチュートリアルでは、UNIX ベースのシステムでのログインシェルと非ログインシェルの違いについて説明します。

UNIX ベースのシステムのシェルとは

UNIX ベースのシステムのシェルは、ユーザーとオペレーティングシステムのカーネル間のインターフェイスです。ユーザーからの入力を受け取り、それをカーネルに送信します。また、カーネルからユーザーに結果を受け取ります。

シェルには、ログインシェルと非ログインシェルの 2 種類があります。

すべてのシェルは、一連の起動スクリプトを実行して、起動後に環境をセットアップします。スクリプトにはさまざまな用途があり、それらはすべて環境に影響を与えます。

後続のスクリプトは、前のスクリプトが設定した値を上書きできます。

UNIX ベースのシステムのログインシェルとは

ログインシェルは、/etc/passwd ファイルを読み取って/bin/login を使用して正常にログインした後に開始される最初のプロセスです。ログインシェルは、ユーザーID で実行されます。

ログインシェルは、端末を使用してログインするとき、別のユーザーに切り替えるとき、または SSH を使用するときに実行されます。

ログインシェルが開始されると、起動スクリプトのコレクションを実行してシェル環境をセットアップします。以下のスクリプトが実行されます。

  1. ログインプロセスは/etc/profile を実行します。
  2. /etc/profile/etc/profile.d のスクリプトを実行します
  3. ログインプロセスは~/.bash_profile を実行します。
  4. ~/.bash_profile~/.bashrc を実行します
  5. ~/.bashrc/etc/bashrc を実行します

次のコマンドは、シェルがログインシェルであるかどうかを示すために使用されます。

echo  $0

出力として -bash または -su を取得すると、シェルがログインシェルであることを示します。出力の前にある - 記号に注意してください。

次の画像では、echo $0 コマンドの出力の前に - があります。シェルがログインシェルであることを示しています。

ログインシェル

UNIX ベースのシステムでの非ログインシェルとは何ですか

ログインシェルは、非ログインシェルを開始します。ログインせずにプロセスで開始するシェル、または別のシェルから開始するシェルの場合があります。プロセスは、シェル実行可能ファイルの名前を使用して、非ログインシェルを開始します。

非ログインシェルとして bash シェルを実行すると、次のスクリプトが実行されます。

  1. 非ログインプロセスは~/.bashrc を実行します
  2. ~/.bashrc/etc/bashrc を実行します
  3. /etc/bashrc/etc/profile.d/を実行します

シェルが非ログインシェルであるかどうかを判断するには、次のコマンドを実行します。

echo $0

出力が bash または su で、前に - 記号がない場合、シェルは非ログインシェルです。

次の画像で echo $0 コマンドを実行すると、出力には bash の前に - が表示されます。これは、ログインシェルを使用していることを意味します。

非ログインシェルを開始するには、シェルの実行可能ファイルの名前、この場合は bash を入力します。echo $0 コマンドを再度実行して、新しく開始されたシェルのタイプを確認します。echo コマンドの出力は、- なしの bash です。これは、新しいシェルが非ログインシェルであることを意味します。

非ログインシェル

著者: Fumbani Banda
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

関連記事 - Linux Shell