Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ShellScript

ログインシェルとは?非ログインシェルとの違いも併せてご紹介

投稿日:2021年2月6日 更新日:

<目次>

(1) ログインシェルとは?非ログインシェルとの違いも併せてご紹介
 (1-1) ログインシェルの概要
 (1-2) ログインシェルの役割
 (1-3) ログインシェルの動作
 (1-4) ログインシェルが呼び出される条件
 (1-5) 非ログインシェルとの違いについて
 (1-6) 見分け方

(1) ログインシェルとは?非ログインシェルとの違いも併せてご紹介

(1-1) ログインシェルの概要

ログインシェルはOSユーザのログイン時に、起動される「シェル」です(ログイン後の最初の処理)。

「シェル」はユーザとカーネル(OSの中核部品)との間のインターフェイスです(コマンドラインインターフェイス)。ユーザから受け取ったコマンドのインタープリタ(コマンドを機械語に変換)として機能します。

通常UNIX系のマシンにTeraTermやPutty等からログインすると、ログインシェルが起動されます。具体的には、PuttyやTeraTermでUNIXサーバにログインする際に、ユーザ名とパスワードを聞いてきます。これが「ログインシェル」です。

ログインシェルには初回ログイン時のみに実施する初期化処理(環境変数の設定など)を行う事が主目的になります。いくつかの起動ファイルからコマンドを読み込み実行しています。

思想的にはユーザはホスト×ターミナル単位で最大1つのログインシェルを持つという考え方です。例えば、ホストAのTeraTerm単位(ターミナルの模倣)で1つ、ホストBのPutty単位(ターミナルの模倣)で1つといった具合です。

目次にもどる

(1-2) ログインシェルの役割

以下がログインシェルの主な役割です。

①ノンログインシェルを起動する
②環境変数をセットする(起動に必要なパラメータ)
③デフォルト値の設定(USERNAME、HOSTNAMEなど)

環境変数は具体的には「PATH」や「TERM」や「UID」や「GID」などです。

目次にもどる

(1-3) ログインシェルの動作

ログインシェルは以下の流れで動作します。

①「/etc/profile」の実行
②「/etc/profile」により「/etc/profile.d/」の全スクリプトが実行される
(「/etc/profile.d/*.sh」が実行される)
③「~/.bash_profile」の実行
④「~/.bash_profile」により「~/.bashrc」が実行される
⑤上記が存在しない場合は「~/.bash_login」⇒「~/.profile」と順番に読み込んでいきます。

目次にもどる

(1-4) ログインシェルが呼び出される条件

条件は色々ありますが、例を2つご紹介します。

①ssh接続によりリモートでマシンに接続する場合
(図141)

②su -usernameで別の非rootユーザにスウィッチする場合
(図142)

目次にもどる

(1-5) 非ログインシェルとの違いについて

一方でGnome(UNIX系のデスクトップ環境)のターミナル(端末)などはログイン情報を聞いてこないので「非ログインシェル」と呼ばれています。
 
ログインシェルによって起動されるシェルであり、ログインシェルとの主な違いは「初期化処理(profileの読み込みや実行)を行うかどうか?です。
 
■非ログインシェルの動作
ノンログインシェルは環境をセットするために以下の処理を実行します。
①「~/.bashrc」の実行
②「~/.bashrc」により「/etc/bashrc」が
③「/etc/bashrc」により「/etc/profile.d」配下のスクリプトを実行
 
■非ログインシェルが呼び出される条件
①新しいGnomeのターミナルを開いた時
(図151)

②プロンプトから「bash」を実行した時
(図152)

目次にもどる

(1-6) 見分け方

TeraTerm等からサーバにログインした直後に以下のコマンドを実行すると、ログインシェルが表示されます。

この結果が「-bash」や「-su」になっているならば、それはログインシェルが有効である事を意味します。逆にハイフン「-」なしの「bash」や「su」の場合はノンログインシェルになります。
 
echo $0
 
(補足:bashについて)
「sh」は「シェル」を意味する単語です。つまりユーザとカーネル(OSの中核部品)との間のインターフェイスを表します。bashはそのシェルを実装したコマンド言語で、コマンドのインタープリタとして機能します(コマンドの読み込みや実行ができる)。
 

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-ShellScript

執筆者:


  1. […] Engineログインシェルとは?非ログインシェルとの違いも併せてご紹介|Rainbow En…環境変数の設定(~/.bash_profile, […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

シェルスクリプトでOracleデータベースに接続する手順+サンプルプログラム

<目次> (1) シェルスクリプトでOracleDBに接続する手順  (1-1) 処理の概要  (1-2) 前半:sqlファイルの作成  (1-3) 後半:シェルスクリプトの作成  (1-4) プログ …

Linux – シェルスクリプト入門(Hello World/引数・変数/条件分岐/繰り返し処理)

シェルスクリプトの作成方法について ■目次 (1)シェルスクリプトでHello World (2)シェルスクリプトで変数/引数を使う (3)シェルスクリプトで条件分岐を記述 (4)シェルスクリプトで繰 …

シェルスクリプトからPL/SQLのプロシージャを実行する方法

<目次> (1) シェルスクリプトからPL/SQLのプロシージャを実行する方法  (1-1) 処理の概要  (1-2) サンプルプログラム   (1-2-1) 呼び出し元:シェルスクリプト側   (1 …

  • English (United States)
  • 日本語
Top