🐧 Linux 総合学習プラットフォーム
基本操作・コマンド ・ 入門

環境変数とPATH:シェルの設定値

シェルは名前つきの値をいくつも覚えている。中でも PATH は「コマンドを探しに行く場所のリスト」で、これのおかげで ls と打つだけで実体が見つかる。env で一覧し、export で子プロセスにも渡せる。

ls と打つだけでコマンドが動くのは、当たり前のようでいて実は不思議だ。ls という実体のファイルは /usr/bin のどこかにあるのに、なぜフルパスを書かなくても見つかるのか。その答えが環境変数にある。シェルは名前と値のペアをたくさん覚えていて、これを変数と呼ぶ。name=値 で作り、$name で取り出す。echo $HOME のように打てば、いま覚えている値が表示される。

🧭 コマンドを探す道しるべ:PATH

数ある変数の中でも特別なのが PATH だ。これは「コマンドを探しに行くディレクトリの一覧」で、コロン : で区切られている。echo $PATH で中身が見える。コマンドを打つと、シェルはこの PATH を左から順にたどり、最初に見つかった同名の実行ファイルを起動する。だから ls とだけ打てば足りる。PATH に載っていない場所のプログラムは、フルパスか ./ を付けないと動かない。

入力ls1つめ/usr/local/bin無ければ次/usr/bin発見して実行/usr/bin/lsPATH を左から順にたどり、最初に見つかった実体を起動する

📤 子プロセスに渡す:export

ただの変数(シェル変数)は、そのシェルの中だけで有効で、そこから起動したスクリプトや別のコマンド(子プロセス)には引き継がれない。引き継がせたいときに export を使い、export した変数を環境変数と呼ぶ。

xyz=aiueo だけでは子スクリプトに見えないが、export xyz とすれば見えるようになる。printenv や env で表示されるのは、この export 済みの環境変数だ。
つまずき現在の環境変数だけを一覧したいときは env または printenv。set はシェル変数まで含めて全部出すので、環境変数に絞りたいなら printenv を使う。PATH や LANG のような値を恒久的に設定したいときは ~/.bashrc に書いておくと、ログインのたびに自動で読み込まれる。
コツまず echo $PATH と echo $HOME で「シェルが何を覚えているか」を眺めてみよう。環境変数は目に見えにくいが、コマンドが動く土台をずっと支えている。

この項目に出てくる用語

環境変数かんきょうへんすう
シェルが覚える名前つきの値のうち、子プロセスにも引き継がれるもの。
PATHぱす
コマンドを探しに行くディレクトリの一覧を持つ環境変数。

関連コマンド

envprintenvexport

▶ 学習アプリでこの続きを学ぶ・演習する