【Linux】シェルと変数について

2019年1月26日

シェルの概要や変数について解説していきます。

シェルとは

Linux上でコマンドを入力すると入力したコマンドに対応したプログラムが実行され結果が表示されます。ユーザーからのコマンドを受け付け、OSを介してLinuxとの仲立ちをするユーザーインターフェースがシェルです。

コマンド解釈と実行

ユーザーから入力されたコマンドはインタプリタで解釈・実行され、ユーザーはシェルを通じてOSを扱えます。

コマンド解釈と実行

以下にシェルとコマンドの関係を記載します。

コマンド実行順
  1. bashシェルがプロンプトを表示
  2. bashシェルがコマンドを解析
  3. プロセスの表示
  4. 処理を実行
  5. プロセスの終了をbashに通知
  6. ユーザーに結果を表示

変数

シェルがユーザー、Linuxとの仲立ちをするためには、ユーザーに関する情報を保持する必要があります。Linuxではこの情報を格納する入れ物のことを変数と呼びます。

変数は、利用できる範囲(スコープと言います)によって「シェル変数」と「環境変数」の2種類に分けられます。

シェル変数

設定されたシェルだけが使用する変数。スコープは設定したシェル内でのみ有効。

シェル変数

環境変数

設定されたもしくはそのシェルで起動したプログラムで使用できる変数。スコープは設定したシェル内と起動したプログラムにも有効。

環境変数

主な環境変数を以下の表に記載します。

環境変数名説明
PATHコマンドやプログラムを検索するためのパスリスト
PWDカレントディレクトリの絶対パス
HOMEユーザーのホームディレクトリ
USER現在のユーザー
HOSTNAMEホスト名
PS1プロンプトの表示文字列
PS2複数行にわたる入力時のプロンプト
HISTFILEコマンド履歴を格納するファイルの定義
HISTSIZEコマンド履歴の最大値
HISTFILESIZEHISTFILEに保存する履歴数

変数の使い方

set
現在のシェルで設定されているシェル変数の一覧を表示する

[root@hostname /]#set
BASH=/bin/bash
BASH_ARGC()
BASH_ARGV()
(以下省略)

シェル変数名 = 値
シェル変数の値を定義

[root@hostname /]#TEST=Hello
TEST変数にHelloを定義

echo
変数の値を表示する

[root@hostname /]#echo $TEST
Hello

unset
変数の削除

[root@hostname /]#unset TEST
TEST変数を削除

export
シェル変数に環境変数を設定

[root@hostname /]#export TEST
環境変数設定
[root@hostname /]#bash
新しいシェルを起動
[root@hostname /]#echo $TEST
Hello
[root@hostname /]#exit
新しいシェルを終了

declare
シェル内の変数と関数を全て表示

書式

declare [オプション] [シェル変数名]

主なオプション

オプション 説明
-x 環境変数としてエクスポート
-f 定義されている関数を表示
-f [シェル変数名] 関数を格納する変数を定義
-i 整数を格納する変数を表示
-i [シェル変数名] 整数を格納する変数を定義
-p 全ての変数とその属性情報を表示

[root@hostname /]#TEST2=world
[root@hostname /]#declare -x TEST2
環境変数設定