やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

bashのシェル変数(全95個)

 使いこなせばBashマスター。

成果物

一覧

 以下の変数はシェルが設定する。(48個)

シェル変数 概要
BASH 現在実行しているbashのフルパス。
BASHOPTS 有効になっているシェルのオプションを示す(コロン区切り)。読込専用。shopt -sonと表示されるものである。
BASHPID 現在のbashプロセスID。($$は非更新)
BASH_ALIASES エイリアスの内部的なリストに対応する連想配列変数。
BASH_ARGC bashの現在の呼出スタックについて、フレームごとの引数の数が並んだ配列変数。
BASH_ARGV bashの現在の呼出スタックについて、全ての引き数が並んだ配列変数。
BASH_CMDS bashが内部に持つコマンドのハッシュテーブルに対応する連想配列変数。
BASH_COMMAND 現在実行しているか実行しようとしているコマンド。
BASH_EXECUTION_STRING 起動オプション -c で指定されたコマンド。
BASH_LINENO ソースファイル中の行番号からなる配列変数。FUNCNAMEと対応する。現在の行番号はLINENO
BASH_REMATCH [[中の二項演算子=~により設定される配列変数。
BASH_SOURCE ソースファイル名からなる配列変数。
BASH_SUBSHELL サブシェルやサブシェル環境が作成されるたびに1増加。初期値0
BASH_VERSINFO 0: メジャー
1: マイナー
2:パッチレベル
3:ビルドバージョン
4:リリースステータス(beta1等)
5:MACHTYPE の値
BASH_VERSION 現在実行しているbashのバージョン。
COMP_CWORD 現在カーソル位置がある単語の配列変数${COMP_WORDS}におけるインデックス。
COMP_KEY 現在の補完関数を呼び出したキー。
COMP_LINE 現在のコマンドライン
COMP_POINT 現在のコマンドの先頭からの相対値として与えられたカーソル位置のインデックス。
COMP_TYPE 補完関数を呼び出した補完のタイプに対応する整数値が設定される。
<TAB>: 通常の補完
?: 連続したタブ入力による候補リスト
!: 途中まで補完した後の候補リスト
@: 部分的な補完ができないときの候補リスト
%: メニュー補完 (menu completion)
COMP_WORDBREAKS 単語補完のときにreadlineライブラリが単語分割の区切文字として扱う文字の並び。
COMP_WORDS 現在のコマンドラインの各単語からなる配列変数。
COPROC 無名のコプロセスが入出力するファイル・ディスクリプターを保持する配列変数。
DIRSTACK 現在のディレクトリスタックの内容を持つ配列変数。
EUID 現在のユーザの実効ユーザID。
FUNCNAME 現在の呼び出しスタックにある全てのシェル関数名が入った配列変数。
GROUPS 現在のユーザがメンバになっているグループのリストを含んだ配列変数。
HISTCMD 現在のコマンドの履歴番号(履歴リストにおけるインデックス)。
HOSTNAME 現在のホスト名。(raspberrypi等)
HOSTTYPE bashを実行するマシンの種類をユニークに記述する文字列。(arm等)
LINENO 行番号。
MACHTYPE bashを実行するシステムの種類(GNU標準のcpu-company-system形式)(arm-unknown-linux-gnueabihf)
MAPFILE 組込コマンドmapfileに変数名が指定されなかったときに読み込んだテキストを保持する配列変数。
OLDPWD 1つ前の作業ディレクトリ。
OPTARG 組込コマンドgetoptsで処理した最後のオプション引数値。
OPTIND 組込コマンドgetoptsで次に処理されるオプション引数インデックス。
OSTYPE bashを実行するOSを記述する文字列。(linux-gnueabihf等)
PIPESTATUS フォアグラウンドで最後に実行したパイプラインの各プロセスの終了ステータスのリストを含む配列変数。
PPID そのシェルの親のプロセスID。
PWD 現在の作業ディレクトリ。
RANDOM 032767までのランダムな整数。
READLINE_LINE readlineの編集バッファ内容。bind -xで使う。
READLINE_POINT readlineの編集バッファでの挿入ポイント位置。bind -xで使う。
REPLY 組込コマンドreadに引き数が与えられなかったときに読み込まれた行。
SECONDS シェルが起動されてからの秒数。
SHELLOPTS 有効になっているシェルのオプションを示す。(コロン区切り) リスト中の単語は組込コマンドset -oに対応。
SHLVL bashが起動するときに環境変数で渡された値から1増やした値。
UID 現在のユーザのユーザID。

 以下の変数はシェルが使用する。(47個)

シェル変数 概要
BASH_ENV bashシェルスクリプトを実行するときにこの値が設定されている場合、この値は(~/.bashrc のように)シェルを初期化するコマンドが書かれているファイル名と解釈される。
BASH_XTRACEFD 有効なファイル・ディスクリプター(fd)に対応する整数をセットするとbashset -xが設定されたときに、生成されたトレース出力を そのfdに出力する。BASH_XTRACEFDunsetされるか新しい値が代入されるとfdは閉じる。
CDPATH cdコマンドの検索パス。コロン区切り。
COLUMNS 組込コマンドselectによって選択されたリストを表示する際の端末幅の決定に用いられる。
COMPREPLY bashが可能な補完候補を読み込む配列変数。
EMACS bashが起動したときにこの環境変数が設定されて値がtになっていると行編集を無効化する。
ENV BASH_ENVと類似の変数でPOSIXモードで使われる。
FCEDIT 組み込みコマンドfcが使うデフォルトのエディタ。
FIGNORE ファイル名補完を行う際に無視するサフィックス(コロン区切り)。.o:~等。
FUNCNEST 0より大きい数値を設定すると関数呼び出しを何重まで許すかの最大レベルを決める。
GLOBIGNORE パス名展開で無視するファイル名の集合を定義するパターン(コロン区切り)
HISTCONTROL 履歴リストに入れるコマンドを制御する値(コロン区切り)
HISTFILE コマンド履歴が保存されるファイルの名前。デフォルト値~/.bash_history
HISTFILESIZE 履歴ファイルに保持する履歴の最大数。
HISTIGNORE どのコマンド行を履歴リストに保存するかを決めるために使うパターン(コロン区切り)
HISTSIZE コマンド履歴に記憶するコマンドの数。 デフォルト500
HISTTIMEFORMAT この変数に空でない値が設定されると組込コマンドhistoryで履歴エントリを表示するときにタイムスタンプを表示するためのstrftime(3)の書式文字列 として使われる。
HOME 現在のユーザのホームディレクトリ。
HOSTFILE シェルがホスト名を補完する必要があるときに読み込むファイルの名前を示す。
IFS 内部フィールド区切文字(Internal Field Separator)。デフォルト値<空白><タブ><改行>
IGNOREEOF 単独で入力された EOF 文字を受け取ったときの対話シェルの動作を制御する。
INPUTRC readlineの起動ファイルのファイル名。デフォルト値~/.inputrcを上書きする。
LANG ロケール設定。(LC_より優先度低)
LC_ALL ロケール設定。(優先度最高)
LC_COLLATE パス名展開の結果をソートするときに使用される照合順序と、パス名展開とパターンマッチングにおける範囲表現、等値クラス、照合順序の動作を決定する。
LC_CTYPE パス名展開とパターンマッチングにおける文字解釈と文字クラスに含まれる文字を決める。
LC_MESSAGES $の後に続くダブルクォートされた文字列の翻訳に使うロケールを決める。
LC_NUMERIC 数字のフォーマットに使用するロケールカテゴリを決める。
LINES 組込コマンドselectによって選択されたリストを表示する際の行数の決定に用いる。
MAIL このパラメータにファイル名またはディレクトリ名が設定されており、かつ変数MAILPATHが設定されていなければbashは指定されたファイルまたはMaildier形式のディレクトリへのメールの到着をユーザに通知します。
MAILCHECK bashがメールをチェックする頻度を秒数で指定。デフォルトは60秒。
MAILPATH メールのチェックに使うファイル名(コロン区切り)。 特定ファイルにメールが到着したときの出力メッセージは?を使ってファイル名をメッセージから区切ることで指定可。メッセージのテキスト中で使われたとき$_は現在のメールファイルの名前になる。MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
OPTERR 1が設定されている場合bashは組込コマンドgetoptsを使って生成したエラーメッセージを表示する。
PATH コマンドの検索パス。(コロン区切り)
POSIXLY_CORRECT bashが起動したときにこの環境変数が設定されていると、起動オプション--posixを指定したときと同じくposixモードになる。 シェルの実行中にこの変数が設定されるとbashset -o posixコマンドを実行したときと同様にposixモードが有効になる。
PROMPT_COMMAND 設定されているとプライマリプロンプトを出す前に毎回、この値がコマンドとして実行されます。
PROMPT_DIRTRIM 0より大きい値が設定されると、プロンプト文字列のエスケープシーケンス\w\Wを展開するときにディレクトリがパス名の最後からこの数だけ残る。
PS1 このパラメータの値は展開されてプライマリのプロンプト文字列になる。デフォルト値\s-\v\$
PS2 このパラメータの値は PS1 と同じように展開され、セカンダリのプロンプト文字列として使われる。デフォルト値>
PS3 このパラメータの値はselectコマンドのプロンプトとして使われる。
PS4 このパラメータはPS1と同じように展開される。この値は実行トレース中にbashが表示する各コマンド前に出力される。デフォルト値は+
SHELL この環境変数にシェルのフルパス名が保存されている。
TIMEFORMAT timeコマンドの書式設定。
%%: 文字%
%[p][l]R: 経過した秒数
%[p][l]U: ユーザモードで使われたCPU秒数
%[p][l]S: システムモードで使われたCPU秒数。
%P: CPUパーセンテージ (%U + %S) / %R

p: 小数点桁数
l: 分(minute)を含む

未設定時: \nreal\t%3lR\nuser\t%3lU\nsys%3lS
TMOUT 0より大きい値を設定すると、TMOUTの値が組込コマンドreadのデフォルトのタイムアウト値となる。selectコマンドはTMOUT秒入力がないと終了する。
TMPDIR 設定するとテンポラリファイル作成ディレクトリ名として使う。
auto_resume ユーザがジョブ制御をするときの方法を変更する。
histchars 2文字か3文字で履歴の展開とトークン分割を制御する。デフォルト値: \^````````'

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

所感

 使いこなせる気がしない……。