気の向くままに辿るIT/ICT/IoT
bash

sh/bash shell組み込み環境変数と組み込みshell変数

ホーム前へ次へ
sh/bashのシェル組み込み変数とは?

sh/bash shell組み込み変数

bash shell組み込み変数とは

 UNIX/Linuxにおけるシェルの1つであるsh/bashには、shell組み込み変数があります。

 組み込み変数の名称は全て予約されており、使用、未使用に関わらず、アプリケーションプログラムやコマンドでその環境変数名の存在やその値を前提または参考にしたり、期待する場合があるのでユーザー定義によって他の目的で使用できない変数です。

 また、組み込み変数にはshellや他に共通の組み込み環境変数とsh/bashのようにshellごとの組み込みshell変数があります。

shell組み込み変数とは

あらかじめ登録され常に利用できる環境変数やshell変数

その他の環境変数やshell変数は

ログイン中のみ有効

 b shell系のshellの場合ユーザーがexportを使ってコマンドラインやshell関数shellスクリプトなどから設定した環境変数やshell変数が(ログアウト後の再ログイン時には存在せず)ログイン中のみ有効であるのに比し、shell組み込み変数は常に存在し、env、printenv、declare、setなどで常に確認できる環境変数/shell変数です。

 よって組み込み変数以外で常に有効にしたい環境変数やshell変数がある場合には、適宜sh/bash 管理設定ファイルに設定します。

 ちなみにbashにはこの他一般的な変数と特殊変数/自動変数があります。

更にsh/bashのその他の一般的な変数は

より一時的な変数としてのみ有効

但し、一時的でありながら、shell関数内で変数を利用する場合スコープが全てグローバルとなってしまい局所化されていなかった点を改善すべくbash shell組み込みコマンドlocalによりローカル変数として宣言できるようになっています

shell組み込み環境変数とsh/bash 組み込みshell変数

 shell組み込み変数には、shell組み込み「環境変数」とsh/bashの組み込み「shell変数」があります。

 但し、OS環境、shellの種類、環境変数とshell変数における共通の変数、固有の変数などから明確に区別できない変数もあります。

主なshell組み込み環境変数

環境変数主な用途
TZTIMEZONE設定(GMT,JST等)
PWDカレントディレクトリパス/一般にcdコマンドの結果を格納
TERM端末の種類
HOMEログインユーザーのホームディレクトリパス
LANG既定の国地域別利用言語
PATH実行ファイルのデフォルト探索パスリスト
PATHEXTPATHにおける実行ファイルの拡張子のリスト
SHELL既定で利用するshellインタプリタファイルパス
SHLVLshellの起動階層の整数値/ログインshellは1
sh/bashでは2以上はlogoutではなくexitでshellを抜ける
TMPDIR一時ディレクトリパス/一般には/tmp
...etc.

 主なsh/bashの組み込み「環境変数」には、こういった変数があります(が、一概に組み込みshell変数と明確に分けるのは難しいものもあります)。

sh/bashの主な組み込みshell変数

sh/bash
shell変数
主な用途
IFSInternal Field Separatorの略/内部フィールドセパレータ
bashで既定とする項目の区切り記号
PS1一般ユーザーのshellプロンプト設定
PS2複数行入力時のshellプロンプト設定
PS3select文利用時の標準入力受付用プロンプト設定
PS4set -xコマンドオプションのデバッグ用行頭記号
BASHbashパス
HISTFILEbashで利用するパスを伴う履歴ファイル名
MAILCHECK定期的なメールチェック秒数
BASH_ARGCscriptにおける引数の数(配列リストとして初期化)
BASH_ARGVscriptにおける実引数(配列リストとして初期化)
BASH_LINENOscript中の行番号(配列リストとして初期化)
BASH_SOURCEscriptのファイル名(配列リストとして初期化)
BASH_VERSIONbashのバージョン情報
BASH_VERSINFOBASH_VERSION用の各項目のリスト
...etc.

 一部他のshellでも利用されるものもあるかもしれませんが、主なsh/bashの組み込み「shell変数」には、こういった変数があります(が、一概に組み込み環境変数と明確に分けるのは難しいものもあります)。

 尚、shell変数は、setコマンドで確認することができますが、set内容のメモリ格納領域はユーザー定義shell関数登録領域としても使用されます。

 ちなみに組み込み「環境変数」と組み込み「shell変数」共に存在する組み込み変数もあります。

 ここでは、ほんの一部の組み込み変数を取り上げましたが、その理由の1つは「環境変数」と「shell変数」に共通または排他の別、更に各種shellに共通のshell組み込み環境変数及びshell変数、その上更にそのshellに固有の環境変数及びshell変数、更に更にOSなどの環境における相違がある場合などを考えたら頭がクラクラしてきたから?です。

LINK

ホーム前へ次へ