CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
前回はシェル変数について説明しました。今回は、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によってデフォルト値が代入されます。
| シェル変数 | 定義例 | 説明 |
|---|---|---|
| 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 Power Platform 最新技術動向 生成AI Docker Kubernetes