Linuxにおけるログインシェルとは何ですか?
Linuxはユーザーがアカウントにログインするときにログインシェルを起動します。それでは、ログインシェルとは何か、そして自分がログインシェルを実行しているかどうかをどのように確認できますか?
あなたは毎日Linuxシェルを使うかもしれませんが、その使い方によってシェルの動作が大きく変わります。ログインシェルと非ログインシェルの違いについて聞いたことがあるかもしれません。そして、最初は明らかではないかもしれませんが、これら2つのシェルタイプの間にはいくつかの違いがあります。
ここにLinuxのログインシェルについて知っておくべきすべての情報があります。
ログインシェルとは何ですか?
ログインシェルとは、Linuxマシンに直接ログインしたときに起動するシェルのことです。仮想コンソールやSSHを介してシステムにログインすると、起動するシェルはログインシェルです。
対照的に、ターミナルウィンドウを起動すると、そのシェルセッションは通常、ログインシェルではありません。同様に、コマンドラインでシェルの名前を入力してサブシェルを起動する場合も同様です。このシェルは単にインタラクティブシェルです。
2つの主な違いは、シェルの動作にあります。シェルはしばしば、起動時に特定のファイルのみを読み込みます。Bashは、/etc/profileを読み込んだ後、.bash_profile、.bash_login、および.profileファイルを、ログインシェルとして起動された場合にのみ、ホームディレクトリ内から読み込みます。
ログインシェルを使用しているかどうかを判断する方法
ログインシェルを実行しているかどうかは簡単に確認できます。デスクトップのターミナルアプリケーションからシェルを起動した場合、WSLやmacOSターミナルのような別のターミナル環境でない限り、ほとんどの場合はログインシェルではありません。
このコマンドを使って、ログインシェルを実行しているかどうかを確認できます;
echo $0ログインシェルを使用している場合、シェルの名前の前にハイフン(-)が付いて表示されます。そうでない場合は、シェルの名前のみが表示されます。
Linuxでのログインシェルの設定
ログインシェルを設定するには、chshコマンドを使用します。ログインシェルを/etc/shellsにリストされている任意のシェルの絶対パスに設定できます。
任意のシェルをログインシェルとして開始するには、通常コマンドラインオプションを使用できます。例えば、Bashをログインシェルとして開始するには:
bash --loginLinuxデスクトップを使用している場合、ターミナルウィンドウを開いたときに実行されるコマンドを指定することができます。シェルをログインシェルとして実行させたい場合は、そのオプションをそこに置くことができます。
これでログインシェルについて知っていることになります。
今、ログインシェルが何であるかを理解したはずです。シェルをコンソールから直接起動するか、ターミナルウィンドウから起動するかによって、その動作が決まります。
Linuxを初めて使う場合、どのシェルが最適か考えるかもしれません。デフォルトのBashを使用することもできますし、FishやZshなどの代替シェルが提供する特別な機能を探求することもできます。

