IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

WSLで始めるUbuntu

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第10回 定義済みのシェル変数について知ろう (宮崎悟) 2019年8月

前回はシェル変数について説明しました。今回は、bashで予め設定された定義済みのシェル変数について説明しようと思います。

定義済みシェル変数

bashを起動すると、すでにいくつかのシェル変数が設定されています。

bashが定義するシェル変数

以下は、bashが起動した時に予め定義されるシェル変数です。

シェル変数 定義例 説明
BASH /bin/bash 現在実行しているbashに使われた完全なパス
BASH_VERSION 4.4.19(1)-release 現在実行しているbashのバージョン
EUID 1000 実行ユーザID
HOME /home/user ホームディレクトリ
HOSTNAME DESKTOP-TEST ホスト名
HOSTTYPE x86_64 実行マシンの種類を自動的に判断して決める
MACHTYPE x86_64-pc-linux-gnu bash を実行するシステムの種類を完全に指定する文字列が自動指定される
OLDPWD / cdコマンドで設定された、1つ前の作業ディレクトリ
OSTYPE linux-gnu bash を実行するOSを記述する文字列が自動的に設定される
PPID 8 bashの親プロセスID
PWD /home/user cd コマンドで設定された現在の作業ディレクトリ
SHELLOPTS braceexpand: emacs: hashall: histexpand:history: interactive-comments: monitor コロン区切りのリストで、有効になっているシェルのオプションを表示する。 リスト中のそれぞれの単語は、組み込みコマンド set の -o オプション に対する有効な引き数になっている。 SHELLOPTS に入っているオプションは、set -o を実行した場合にも on であると報告される。 この変数が bash の起動時に環境変数に入っていた場合、 どの初期化ファイルを読むよりも前にリスト中のシェルオプションが有効になる。 この変数は読み込み専用。
SHLVL 3 bash が起動するときに、環境変数で渡された値から 1 増やした値が 設定される
UID 1000 現在のユーザのユーザ ID
bashが使用するシェル変数

以下は、bashが使用するシェル変数です。場合によってはbashによってデフォルト値が代入されます。

シェル変数 定義例 説明
COLUMNS 120 ターミナルで表示する桁数
HISTCONTROLL ignoreboth 後述
HISTFILESIZE 2000 ヒストリファイルに保存するヒストリの数
HISTSIZE 1000 内部で保持するヒストリの数
IFS $' \t\n' 内部フィールドの区切り文字
LANG ja_JP.UTF-8 ロケールカテゴリのデフォルト値
LC_ALL 設定されると、変数LC_* とLANGに優先して使用されるロケール
LC_COLLATE ja_JP.UTF-8 パス展開結果をソート順序を決めるためのロケールを指定
LC_CTYPE ja_JP.UTF-8 パス名展開、パターンマッチに使用されるロケールを指定
LC_MESSAGES ja_JP.UTF-8 $の後に続く""で囲まれた文字列のロケールを設定します
LC_TIME C.UTF-8 日付表示の際のロケールを指定します
LINES 80 ターミナルで表示する行数
PATH /usr/local/sbin:/usr/local/bin: /usr/sbin:/usr/bin:/sbin:/bin: /mnt/c/WINDOWS/SYSTEM32: /mnt/c/WINDOWS: ...(以下略 コマンドの検索パス。シェルがコマンドを検索するディレクトリをコロン(:)で区切って記述する<br />WSLでは、Windowsの環境変数PATHが末尾に組み込まれる
PPID 8 bashの親プロセスID
PS1 '${debian_chroot:+($debian_chroot)}\u@\h:\w$ ' このパラメータの値は展開されてプライマリのプロンプト文字列として使われる
PS2 '> ' このパラメータの値は PS1 と同じように展開され、セカンダリのプロンプト文字列として使われる
PS3 このパラメータの値は 組み込みコマンドselect のプロンプトとして使われる
PS4 '+ ' このパラメータは PS1 と同じように展開され、実行トレース中に bash が表示する各コマンド前に出力される。 複数段の間接レベル (levels of indirection) を示すときは、 PS4 の最初の文字が必要に応じて複数回表示される。
SHELL /bin/bash シェルのフルパス名が保存されている
USER user 現在のユーザのユーザ 名
位置パラメータ

位置パラメータは1桁以上の数値で表されるパラメータです。この数値はコマンド以降の引数に対応します。2桁以上の位置パラメータは${12}のようにブレース「{}」で囲む必要があります。使いみちは後日シェルスクリプトを説明する際に行います。

特殊パラメータ。

以下は特殊パラメータと呼ばれる変数で、一文字で表されます。この特殊パラメータは山椒の実を許されています。

パラメータ 説明
* すべての位置パラメータを展開する。ダブルクォートの内部で展開が行われたときは、 それぞれのパラメータを特別な変数である IFS の最初の文字で区切って並べた 1 つの単語("$1 $2 ...")に展開される。
@ すべての位置パラメータを展開する。ダブルクォートの内部で展開が行われたときは、 それぞれのパラメータは別々の単語("$1" "$2" ...)に展開される。
# 位置パラメータの個数を示す 10 進値に展開される
? 最後に実行されたフォアグラウンドのパイプラインの 終了ステータス
- 現在のオプションフラグに展開される
$ シェルのプロセス ID に展開される
! 最後に実行されたバックグラウンドコマンドのプロセスIDに展開される
0 シェルもしくはシェルスクリプトの名前に展開される
_(アンダースコア) シェルまたはシェルスクリプトの絶対パスに展開される
終わりに

今回は、bashが設定・使用するシェル変数について説明しました。良くわからない部分があったと思いますが、シェルスクリプトなどはまた後日説明します。

次回は、ロケールの動きや、PS1~PS4などの特殊なシェル変数の設定について説明しようと思います。次回をお楽しみにお待ち下さい。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes