シェルはLinuxアーキテクチャの重要なレイヤーです。シェルは、ユーザーからの入力を受け取り、カーネルに命令を送信するインターフェースです。また、カーネルからの出力を受け取り、結果を出力シェルに送り返します。
このチュートリアルでは、例としてBashシェルを使用します。基本的に、シェルには2つのタイプがあります。ログインシェル および非ログインシェル 。すべてのシェルは、事前定義されたスクリプトのセットを実行して、シェル環境を構成します。
ログインシェル
ユーザーのログインが成功すると、ログインシェルが作成されます。たとえば、ターミナル、SSH、または「su-」コマンドでユーザーに切り替えることでLinuxシステムにログインする場合。
ログインシェルが起動すると、一連の事前定義されたスクリプトが実行され、シェル環境が構成されます。ログインシェルを識別するには、ターミナルで以下のコマンドを実行します。
echo $0
「-bash」や「-su」のような結果が得られた場合は、ログインシェルを使用しています。プレフィックスとしてハイフン(-)が含まれていることを確認してください。
ログインシェル 次のスクリプトを実行します:
- ログインシェルは/etc/profileを実行します
- / etc / profileは、/ etc /profile.d/内のすべてのスクリプトを実行します
- 次に、ユーザーを実行します〜/ .bash_profile
- 〜/ .bash_profileはユーザーを実行します〜/ .bashrc
- 〜/.bashrcは/etc/bashrcを実行します
非ログインシェル
非ログインシェルは、ログインシェルによって開始されるシェルです。たとえば、別のシェルから開始したシェル、またはプログラムによって開始したシェルなど。
非ログインシェルは、次のスクリプトを実行してシェル環境を設定します。
- 非ログインシェルは最初に〜/.bashrcを実行します
- 次に、〜/.bashrcは/etc/bashrcを実行します
- / etc/bashrcは/etc/profile.dのスクリプトを呼び出します
ログインシェルと非ログインシェルの確認
現在のシェルがログインシェルまたは非ログインシェルであることを確認するには、以下のコマンドを実行するだけです。結果を見て、それらの間の違いを見つけてください。
echo $0
ログインシェルの出力は-bashになります または-su 。
ログイン以外のシェル出力はbashになります またはsu