最終更新:2013-12-20 (金) 17:15:30 (3770d)  

Bash/シェル変数
Top / Bash / シェル変数

http://www.linux.or.jp/JM/html/GNU_bash/man1/bash.1.html

シェルが設定

  • PPID? - そのシェルの親のプロセス ID。この変数は読み込み専用です。
  • PWD - cd コマンドで設定された現在の作業ディレクトリ。
  • OLDPWD? - cd コマンドで設定された、1 つ前の作業ディレクトリ。
  • REPLY? - 組み込みコマンド read に引き数が与えられなかった時に読み込まれた行が設定されます。
  • UID? - 現在のユーザのユーザ ID に展開されます。 初期化はシェルの起動時に行われます。 この変数は読み込み専用です。
  • EUID? - 現在のユーザの実効ユーザ ID に展開されます。 初期化はシェルの起動時に行われます。 この変数は読み込み専用です。
  • GROUPS? - 現在のユーザがメンバになっているグループのリストを含んだ配列変数です。 GROUPS への代入は効果がなく、エラーステータスを返します。 GROUPS が unset された場合はこの変数の特殊な性質はなくなります。 その後に再設定されたとしても元に戻りません。
  • BASH? - 現在実行している bash を起動したときに使われた、完全なファイル名に展開されます。
  • BASH_VERSION? - 現在実行している bash のバージョンを示す文字列に展開されます。
  • BASH_VERSINFO? - 読み込み専用の配列変数で、配列の各要素は現在実行されている bash のバージョン情報を持っています。 配列変数の要素に代入される内容を以下に示します:
    • BASH_VERSINFO[0] - メジャーバージョン番号 (リリース)。
    • BASH_VERSINFO[1] - マイナーバージョン番号 (バージョン)。
    • BASH_VERSINFO[2] - パッチレベル。
    • BASH_VERSINFO[3] - ビルドバージョン。
    • BASH_VERSINFO[4] - リリースステータス (beta1 など)。
    • BASH_VERSINFO[5] - MACHTYPE の値。
  • SHLVL? - bash の実体が起動されるたびに 1 ずつ増えます。
  • RANDOM? - このパラメータが参照される度に、 0 から 32767 までのランダムな整数が生成されます。 RANDOM に値を代入すると、乱数の列を初期化できます。 RANDOM を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
  • SECONDS - このパラメータを参照すると、シェルが起動されてからの秒数が返されます。 SECONDS に値を代入した場合、それ以降の参照において返される値は、 代入された値と代入以降の秒数を足した値になります。 SECONDS を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
  • LINENO? - この変数が参照されると、 シェルはスクリプトや関数における現在の行番号 (1から始まります) を表す 10 進値を代入します。スクリプトや関数の内部でない場合には、 意味のある値が代入されることは保証されません。 LINENO を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
  • HISTCMD? - 現在のコマンドの履歴番号 (履歴リストにおけるインデックス) です。 HISTCMD を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
  • FUNCNAME? - 現在実行中のシェル関数の名前です。 この変数はシェル関数を実行している間のみ存在します。 FUNCNAME への代入は効果がなく、エラーステータスを返します。 FUNCNAME を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
  • DIRSTACK? - 現在のディレクトリスタックの内容を持つ配列変数 (後述の 配列 を参照) です。組み込みコマンド dirs を使うと、スタック中のディレクトリがスタック順に表示されます。 配列変数の要素に代入を行うと、 既にスタックに入っているディレクトリを変更できますが、 ディレクトリの追加と削除を行うためには、組み込みコマンドの pushd と popd を使わなければなりません。 この変数に代入を行っても現在の作業ディレクトリは変わりません。 DIRSTACK を unset すると、この変数の特殊な性質は無くなります。後で再び set しても元には戻りません。
  • PIPESTATUS? - フォアグラウンドのパイプラインで最後に実行されたプロセスの 終了ステータスのリストを含む配列変数です (後述の 配列 を参照)。
  • OPTARG - 組み込みコマンド getopts で処理した最後のオプション引き数の値です (後述の シェルの組み込みコマンド を参照)。
  • OPTIND? - 組み込みコマンド getopts で次に処理されるオプション引き数のインデックスです (後述の シェルの組み込みコマンド を参照)。
  • HOSTNAME? - 現在のホスト名が自動的に設定されます。
  • HOSTTYPE? - bash を実行するマシンの種類をユニークに記述する文字列が自動的に設定されます。 デフォルト値はシステム依存です。
  • OSTYPE? - bash を実行するオペレーティングシステムを記述する文字列が自動的に設定されます。 デフォルト値はシステム依存です。
  • MACHTYPE? - bash を実行するシステムの種類を完全に指定する文字列が、 GNU 標準の cpu-company-system の形式で設定されます。 デフォルト値はシステム依存です。
  • SHELLOPTS - コロン区切りのリストで、有効になっているシェルのオプションを示します。 リスト中のそれぞれの単語は、組み込みコマンド set の -o オプション (後述の シェルの組み込みコマンド を参照) に対する有効な引き数になっています。 SHELLOPTS に入っているオプションは、set -o を実行した場合にも on であると報告されます。 この変数が bash の起動時に環境変数に入っていた場合、 どの起動ファイルを読むよりも前にリスト中のシェルオプションが有効になります。 この変数は読み込み専用です。
  • COMP_WORDS? - 現在のコマンドラインの各単語からなる配列変数 (後述の 配列 参照) です。 この変数はプログラム補完機能 (後述の プログラム補完 を参照) から呼ばれたシェル関数においてのみ有効です。
  • COMP_CWORD? - 現在カーソル位置が置かれている単語の ${COMP_WORDS} におけるインデックスです。 この変数はプログラム補完機能 (後述の プログラム補完 を参照) から呼ばれたシェル関数においてのみ有効です。
  • COMP_LINE? - 現在のコマンドラインです。 この変数はプログラム補完機能 (後述の プログラム補完 を参照) から呼ばれたシェル関数においてのみ有効です。
  • COMP_POINT? - 現在のコマンドの先頭からの相対値として与えられた カーソル位置のインデックスです。 現在のカーソル位置が現在の現在のコマンドの最後にある場合、 この変数の値は ${#COMP_LINE} と等しくなります。 この変数はプログラム補完機能 (後述の プログラム補完 を参照) から呼ばれたシェル関数においてのみ有効です。

シェルが使用

場合によっては、Bash がデフォルト値を変数に代入します。

  • IFS - 内部フィールド区切り文字 (Internal Field Separator) です。展開を行った後に単語を分割する場合や、組み込みコマンドの read を使った時に行を単語に分割する場合に使われます。 デフォルト値は ``<空白><タブ><改行>'' です。
  • PATH - コマンドの検索パスです。 シェルがコマンドを検索するディレクトリをコロンで区切って並べたリストです (後述の コマンドの実行 を参照)。デフォルトのパスはシステム依存で、 bash をインストールしたシステム管理者が設定します。 一般的な値は ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.'' です。
  • HOME - 現在のユーザのホームディレクトリです。 組み込みコマンド cd のデフォルトの引き数になります。 この変数の値は、チルダ展開を実行するときにも使われます。
  • CDPATH? - cd コマンドの検索パスです。これは、 cd コマンドで指定した対象ディレクトリを探すディレクトリを コロンで区切って並べたリストです。 例えば、``.:~:/usr'' といった値になります。
  • BASH_ENV? - bash がシェルスクリプトを実行する時にこの値が設定されている場合、 この値は (~/.bashrc のように) シェルを初期化するコマンドが書かれているファイル名と解釈されます。 BASH_ENV の値をファイル名として処理する前には、パラメータ展開、コマンド置換、 算術的展開が行われます。 この結果のファイルを検索する際には PATH は使用されません。
  • MAIL? - このパラメータにファイル名が設定されており、かつ変数 MAILPATH が設定されていなければ、 bash は指定されたファイルへのメールの到着をユーザに通知します。
  • MAILCHECK? - bash がメールをチェックする頻度を (秒数で) 指定します。 デフォルト値は 60 秒です。 メールをチェックする時間になると、 シェルはプライマリのプロンプトを表示する前にチェックを行います。 この変数が unset された場合、 あるいはこの変数に 0 より大きい数値以外が代入された場合は、 シェルはメールのチェックを行いません。
  • MAILPATH? - メールのチェックに使うファイル名をコロンで区切って並べたリストです。 特定のファイルにメールが到着したときに出力される メッセージは、`?' を使ってファイル名をメッセージから区切ることによって 指定できます。メッセージのテキスト中で使われたときは、 $_ は現在のメールファイルの名前に展開されます。 設定例:
    • MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' -
    • この変数のデフォルト値は bash が与えますが、 bash が使うユーザのメールファイルの位置はシステム依存です (/var/mail/$USER 等)。 -
  • PS1 - このパラメータの値は展開されてプライマリのプロンプト文字列として使われます。 (後述の プロンプト を参照)、 デフォルト値は ``\s-\v\$ '' です。
  • PS2 - このパラメータの値は PS1 と同じように展開され、セカンダリのプロンプト文字列として使われます。 デフォルト値は ``> '' です。
  • PS3 - このパラメータの値は select コマンド (前述の シェルの文法 を参照) のプロンプトとして使われます。
  • PS4 - このパラメータは PS1 と同じように展開されます。この値は実行トレース中に bash が表示する各コマンド前に出力されます。 複数段の間接レベル (levels of indirection) を示すときは、 PS4 の最初の文字が必要に応じて複数回表示されます。 デフォルト値は ``+ '' です。
  • TIMEFORMAT - このパラメータの値は、予約語である time が先頭に付いているパイプラインに対して、 時間情報の表示の仕方を指定するフォーマット文字列として使われます。 % は、時間の値などに展開される エスケープシーケンスを示すための文字です。 エスケープシーケンスとその意味を以下に示します。 ただし、ブレース ([]) は省略可能であることを表しま す。
    • %% - % 文字そのもの。
    • %[p][l]R - 経過した秒数。
    • %[p][l]U - ユーザモードで使われた CPU の秒数。
    • %[p][l]S - システムモードで使われた CPU の秒数。
    • %P - CPU のパーセンテージ。(%U + %S) / %R で算出されます。
    • p 省略可能で、精度 (precision) が何桁であるかを指定します。 つまり小数点以下の桁数を指定します。この値が 0 ならば、 小数点や小数の部分は出力されません。 また、小数点以下で指定できるのは 3 桁までです。 つまり、p の値が 3 より大きければ 3 に変更されます。 p を指定しなければ、この値は 3 となります。 - l は省略可能ですが、指定すると、分を含み、 MMmSS.FF という形式の長いフォーマットになります。 小数を含むかどうかは p の値によって決まります。
    • この変数が設定されていなければ、 bash は $' - real\t%3lR - user\t%3lU - sys %3lS' という値が指定されているかのように動作します。 この値が空文字列ならば、時間の情報は表示されません。 フォーマット文字列の表示の際には、末尾に改行文字が追加されます。
  • HISTSIZE? - コマンド履歴に記憶するコマンドの数 (後述の HISTORY を参照)。
  • HISTFILE? - コマンド履歴が保存されるファイルの名前 (後述の 履歴 を参照)。デフォルト値は ~/.bash_history です。 設定されていない場合、 対話シェルが終了する時に履歴の保存が行われません。
  • HISTFILESIZE? - 履歴ファイルに保持する履歴の最大数です。この変数に値が代入された場合、 その行数を越えないように、必要に応じて履歴ファイルが切り詰められます。 デフォルト値は 500 です。対話シェルが終了する時にも、 履歴ファイルのサイズはファイル書き込みの後にこのサイズに切り詰められます。
  • OPTERR? - 値として 1 が設定されている場合、 bash は組み込みコマンド getopts (後述の シェルの組み込みコマンド を参照) を使って生成したエラーメッセージを表示します。 シェルが起動されたり、シェルスクリプトが実行される度に、 OPTERR は 1 に初期化されます。
  • LANG - LC_ で始まる変数で特に選択されない任意のカテゴリに対して、 ロケールのカテゴリを決めるために使います。
  • LC_ALL? - この変数はロケールのカテゴリを指定する LC_ 変数と LANG の 値を全て上書きします。
  • LC_COLLATE? - この変数はパス名展開の結果をソートするときに使用される照合順序と、 パス名展開とパターンマッチングにおける 範囲展開、同値クラス、照合シーケンスの動作決定します。
  • LC_CTYPE? - この変数は、パス名展開とパターンマッチングにおける 文字の解釈と文字クラスの挙動を決めます。
  • LC_MESSAGES - この変数は、$ の後に続くダブルクォートされた文字列の 翻訳に使うロケールを決めます。
  • LC_NUMERIC? - この変数は数字のフォーマットに使用するロケールカテゴリを決定します。
  • LINES? - 組み込みコマンド select によって、選択されたリストを表示する際の行数の決定に用いられます。 SIGWINCH を受信すると自動的に設定されます。
  • COLUMNS? - 組み込みコマンド select によって、選択されたリストを表示する際の端末幅の決定に用いられます。 SIGWINCH を受信すると自動的に設定されます。 PROMPT_COMMAND 設定されていると、プライマリプロンプトを出す前に毎回、 この値がコマンドとして実行されます。
  • IGNOREEOF? - 単独で入力された EOF 文字を受け取ったときの対話シェルの動作を制御します。 この変数が設定されていれば、指定されている値の数だけの EOF 文字を連続して行頭の文字として入力しなければ bash は終了しません。この変数に数値以外の値が設定されている場合や、 値が設定されていない場合には、デフォルト値として 10 が使われます。 この変数が存在しなければ、 EOF 文字はシェルへの入力の終わりを示します。
  • TMOUT? - 0 より大きい値が設定されていると、 この値はプライマリプロンプトを出した後に入力を待つ秒数として解釈されます。 この秒数だけ待った時点で入力が無ければ bash は終了します。
  • FCEDIT? - 組み込みコマンド fc? が使うデフォルトのエディタです。
  • FIGNORE? - ファイル名補完 (後述の READLINE を参照) を行う際に無視するサフィックスを コロンで区切って並べたリストです。 FIGNORE のエントリのいずれかにサフィックスがマッチするファイル名は、 ファイル名補完にマッチするファイルのリストから除外されます。 例えば値として ``.o:~'' を設定します。
  • GLOBIGNORE? - パス名展開で無視するファイル名の集合を定義するパターンを コロンで区切って並べたリストです。 パス名展開パターンにマッチするファイル名が GLOBIGNORE 内のパターンのどれかにもマッチする場合、 これはマッチしたもののリストから削除されます。
  • INPUTRC? - readline の起動ファイルのファイル名です。これはデフォルト値の ~/.inputrc (後述の READLINE を参照) を上書きします。
  • HISTCONTROL? - ignorespace の値が設定されていると、 空白 文字で始まる行は履歴リストに入りません。 ignoredups の値が設定されていると、 履歴の最後の行にマッチする行は履歴リストに入りません。 ignoreboth の値はこれらの 2 つのオプションを同時に実現します。 設定されていないか上記のいずれの値でもない場合には、 パーザが読み込んだ全ての行は HISTIGNORE の値が示す条件の下で履歴リストに保存されます。 この変数は既に古くなっており、この機能は HISTIGNORE 変数で用いることになっています。 複数行にまたがる複雑なコマンドの場合は 2 番目以降の行が調べられることはありません。よって、これらは HISTCONTROL の値に関わらず履歴に追加されます。
  • HISTIGNORE? - どのコマンド行を履歴リストに保存するかを決めるために使うパターンを コロンで区切って並べたリストです。 それぞれのパターンは行の先頭と比較され、 行全体が完全に一致しなければなりません (`*' が暗黙的に追加されるこ とはありません)。各パターンの評価は HISTCONTROL で指定したチェックが行われた後の行に対して実行されます。 通常のシェルのパターンマッチング文字以外に、 `&' が履歴の前の行にマッチします。 バックスラッシュを使って `&' をエスケープできます。 マッチングを試みる前にバックスラッシュは取り除かれます。 複数行にまたがる複雑なコマンドの場合、2 番目以降の行は調べられません。 よって、これらは HISTIGNORE の値に関わらず履歴に追加されます。
  • histchars - 2 文字または 3 文字で、 履歴の展開とトークン分割 (後述の 履歴展開 を参照) を制御します。 最初の文字は 履歴展開 (history expansion) 文字であり、 履歴展開の先頭を示す文字です。通常、これは `!' です。 2 番目の文字は 簡易置換 (quick substitution) 文字であり、前に入力したコマンドの文字列を 別の文字列に置き換えて再実行を行うための省略表現として使います。 デフォルト値は `^' です。 3 番目の文字は省略可能です。単語の先頭でこの文字が見つかると、 行の残りの部分がコメントとなるような文字を指定します。 これは通常は `#' です。 履歴コメント文字があると、 その行の残りの単語に対する履歴置換はスキップされます。 この文字があるからといって、 必ずしもシェルのパーザが行の残りの部分をコメントとして扱うわけではありません。
  • HOSTFILE? - /etc/hosts と同じフォーマットであり、 シェルがホスト名を補完する必要があるときに読み込むファイルの名前を示します。 シェルの実行中でも補完するホスト名のリストを変更できます。 この変数が変更された次の機会にホスト名の補完を試みるとき、 bash は新しいファイルの内容を既存のデータベースに追加します。 HOSTFILE が設定されているがその値が空文字列の場合、 bash は補完可能なホスト名のリストを取得するために /etc/hosts を使用します。 HOSTFILE が unset された場合は、ホスト名のリストはクリアされます。
  • auto_resume - この変数はシェルがユーザとジョブ制御の相互作用をどのように扱うかを決めます。 この変数を設定した場合、1 語からなるリダイレクト無しの単純なコマンドが、 停止中ジョブの実行再開候補として扱われます。 曖昧な指定は許されません。 入力された文字列で始まるジョブが複数ある場合には、 最後にアクセスされたものが選ばれます。 ここでの 名前 とは、コマンドを起動する際に使ったコマンドラインのことです。 この値に exact が設定されている場合、 与えられた文字列は停止しているジョブの名前に 正確にマッチしなければなりません。 substring が設定されている場合は、 与えられた文字列は停止しているジョブの名前の部分文字列に マッチする必要があります。 substring という値は、ジョブ識別子の %? に似た機能を持っています (後述の ジョブ制御 を参照)。これ以外の値が設定されている場合、 与えられた文字列は停止しているジョブの名前の プレフィックスでなければなりません。これはジョブ識別子の % と似た機能を持っています。
  • COMPREPLY? - bash が可能な補完候補を読み込む配列変数です。 この値はプログラム補完機能 (後述の プログラム補完 を参照) によって呼び出されたシェル関数によって生成されます。