GNU/Linux >> Linux の 問題 >  >> Linux

Linuxのログインシェルとは何ですか?

ログインシェルは、インタラクティブセッションにログインするときにユーザーIDを使用して実行される最初のプロセスです。

これは一見単純に見えるかもしれませんが、深く掘り下げると、少し混乱する可能性があります。理解するために、Linuxシステムでのログインプロセスをもう一度見てみましょう。

Linuxは、複数のユーザーが同時にログインしてシステムを使用できるマルチユーザーシステムです。

Linuxシステムの最初のプロセスは、initであろうとsystemdであろうと、gettyプログラムを開始します。このgettyは、「get tty」(ttyは物理端末または仮想端末を示します)の略で、不正アクセスからシステムを保護する役割を果たします。

Linuxシステムに直接(サーバーがローカルにインストールされている場合)またはSSH経由(サーバーがリモートの場所にある場合)に接続しようとすると、gettyは(ログインプログラムを介して)ユーザー名の入力を求めます。ユーザー名を入力すると、パスワードの入力を求められます。

エントリは、/ etc/passwdファイルに保存されている情報と照合されます。 / etc / passwdファイルのエントリには、ユーザー名、ユーザーID、ホームディレクトリ、ログインが成功した後に起動する必要がある最初のプログラムなどの情報が含まれています。

上の図でわかるように、ユーザーabhishekがログインしたときに最初に起動するプログラムです。Linuxの標準ユーザーの場合、これはログインシェルです。

フィールドには他の値もある可能性があります。たとえば、sshdは実際のユーザーではなくシステムユーザーであり、abhishekのような通常のユーザーのようにインタラクティブにシステムにログインすることはできません。

sshd:x:110:65534::/run/sshd:/usr/sbin/nologin

シェルの最初のプログラム/ログインの列にエントリがない場合、デフォルトで/ bin / sh、つまり標準シェルになります。

あまり多くの情報ではなかったと思います。

ログインシェルと非ログインシェル

了解しました。システムにログインして、それがログインシェルであることを確認しました。しかし、それはどういう意味ですか?他のシェルもありますか?どこにありますか?

Linuxでは、シェルスクリプトを実行すると、それ自体のシェル(非対話型シェル)で実行されます。現在のシェル(インタラクティブシェル)から新しいシェルを開始できます。

技術的には、これらはサブシェルですが、このトピックについては後で詳しく説明します。とりあえずログインシェルに注目しましょう。

シェルのプロファイルファイルとRCファイル

ログインシェルは、/ etc/profileおよびホームディレクトリのプロファイルファイルから環境変数およびその他の構成を読み取ります。これにより、タブ補完、色付きの出力、およびumaskなどの他のものの設定が可能になります。

Linuxシステムで利用できるシェルが複数あることはご存知でしょう。ほとんどのLinuxディストリビューションはデフォルトでbashシェルを使用しますが、zshやFishシェルなどの別のシェルをインストールすることもできます。

ログインシェルがbashの場合、/ etc / profileおよび〜/.bash_profileファイルから読み取ります。ログインシェルがzshの場合、/ etc / zprofileおよび〜/.zprofileから読み取ります。

/ etcディレクトリ内のファイルは、システム上のすべてのユーザーのそれぞれのシェル構成を設定します。これは通常、システム管理者によって設定されます。

ユーザーのホームディレクトリにあるファイルは、明らかにユーザー固有のものです。これにより、ユーザーは頻繁に使用するコマンドのエイリアスを作成したり、プログラムのカスタムPATH変数を使用したりできます。

非ログインシェルはログインシェルから発生するため、プロファイルファイルを介してログインシェルによって設定されたすべての環境を取得します。それに加えて、非ログインの対話型シェルは、/ etcまたはホームディレクトリにあるrc(リソース構成)ファイルを介して独自の環境変数を定義できます。

bashシェルの場合は通常/etc/bash.bashrcファイルと〜/ .bash_rcファイルですが、zshシェルの場合は/etc/zshrcと〜/.zshrcです。

違いを実際の例で示しましょう。

シェルプロンプトがどのように緑がかった色に変わるかに注意してください。これは、/ etc / bash.bashrcファイルを読み取り、Ubuntuがこのファイルに追加のパラメーターを追加したためです。色付きのプロンプトはその1つです。

要約すると:

  • プロファイルファイルは、インタラクティブログインシェル用です。 rcファイルは、インタラクティブな非ログインシェル用です。
  • / etcディレクトリ内のファイルが最初に実行され、次にホームディレクトリ内のファイルが実行されます。
  • 非ログインのインタラクティブシェルは、プロファイルファイルとrcファイルの両方の恩恵を受けます。

ログインシェルにいるかどうかを知る方法

少なくともbashシェルの場合、これは実際には非常に簡単です。ログインシェルの場合、シェル実行可能ファイルの名前は-で始まります。 。ログインしていないシェルの場合は、シェルの名前にすぎません。

シェルをチェックする方法を知っていますよね?引数0の値を確認します。

デスクトップLinuxでは、ログインシェルを使用しません。ログインはディスプレイマネージャーによって管理されます。これが、Linuxデスクトップでターミナルを開くと、ターミナルで実行されている最初のシェルでさえログインシェルではないことがわかる理由です。

ここでログインシェルについて明確にしようとしました。ただし、これらのことについて疑問に思ったことがない場合は、未回答の質問が残る可能性があります。コメント欄でお気軽にお問い合わせください。回答させていただきます。

これを読んでいるエキスパートユーザーで、技術的に間違っている点や重要な点が欠けている点を見つけた場合は、コメントでお知らせください。


Linux
  1. Linuxユーザーとは何ですか?

  2. Red Hat Linux とは?

  3. JingOS Linux とは何ですか?

  1. LinuxのUmaskとは

  2. Linuxでシェルを変更する方法

  3. Linux でのデフォルト シェルの変更

  1. Linuxのシェルの種類は何ですか?

  2. UNIX / Linux :シェルとは?異なるシェルとは何ですか?

  3. % は Linux シェル文字列で何をしますか?