環境変数
手順書の最後の行は「社内の確認ツール checktool で設定を確かめる」です。checktool は /opt/checktool/bin に置いてあります。checktool と打つと「command not found(コマンドが見つからない)」と出ました
環境変数は、シェルやプログラムに渡される「名前=値」の設定です。
PATH はその一つで、コマンドの名前だけを打ったときに、プログラムを探しに行くディレクトリの一覧です。
- 環境変数は、シェルや、そこから動かすプログラムに渡される「名前=値」の設定
- PATH は、コマンドの名前だけを打ったときに、プログラムを探しに行くディレクトリの一覧(: で区切る)
- 「PATHが通っている」は、そのプログラムがあるディレクトリが PATH に入っていて、名前だけで動かせる状態
- 中身は echo $PATH で見られる
身近な例えで理解する
はさみを探すとき、「まず机の引き出し、なければリビングの棚、それでもなければ工具箱」と、探す場所の順番が決まっています。その順番にない場所にしまったはさみは、「はさみどこ?」と探しても見つかりません。
- 探す場所の順番PATH(ディレクトリの一覧)
- 「はさみどこ?」コマンドの名前だけを打つ
- 順番にない場所にしまったはさみPATH に入っていないディレクトリのプログラム
- 「物置の2段目の箱」と場所ごと言う/opt/checktool/bin/checktool と場所ごと打つ
場所ごと言えば見つかりますし、探す場所の一覧に物置を足せば「はさみどこ?」でも見つかります。
ちょっと確認
先輩が確かめたいことは?
例えを外して、実際のしくみ
環境変数
PATH のしくみ
/usr/local/bin:/usr/bin:/bin のように、ディレクトリを : で区切って並べたものです。/ を含まない名前でコマンドを打つと、シェルはこの順にディレクトリを探し、最初に見つかったものを動かします。どこにもなければ「command not found」になります
確かめ方
echo $PATH で PATH の中身を表示します。$ をつけると変数の中身を取り出せます。printenv で環境変数をまとめて見られます
変え方と効く範囲
export PATH="$PATH:/opt/checktool/bin" のように、今までの PATH の後ろに足します。ただし、そのシェルと、そこから動かすプログラムにだけ効き、ログインし直すと元に戻ります。前の PATH を消して上書きすると、ほかのコマンドが見つからなくなるので注意します
user2@vm:~$ echo $HOME
/home/user2
user2@vm:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
user2@vm:~$ checktool
-bash: checktool: command not found
user2@vm:~$ export PATH="$PATH:/opt/checktool/bin"
user2@vm:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/checktool/binchecktool は PATH のどのディレクトリにもないので、「command not found」になりました。export で足すと、PATH の最後に /opt/checktool/bin が加わります(この例では、そのディレクトリにまだ何も入れていません)。
このページのまとめ
- 環境変数
- シェルやプログラムに渡す「名前=値」の設定です
- PATH
- コマンドを探しに行くディレクトリの一覧です(: 区切り)
- PATHが通っている
- そのディレクトリが PATH に入っていて、名前だけで動かせる状態です
- echo $PATH
- PATH の中身を表示するコマンドです
先輩のひとことの意味
先輩「PATH通ってる?」
checktool は /opt/checktool/bin にあります。「そのディレクトリが PATH に入っていて、checktool という名前だけで探せる状態になってる?」という意味です。echo $PATH で確かめ、入っていなければ場所ごと(/opt/checktool/bin/checktool)打つか、手順書や先輩に確かめてから PATH に足します。
練習問題で確かめる
PATH の中身を表示するコマンドは?
/opt/checktool/bin/checktool と打つと動くのに、checktool だけだと「command not found」になる。理由は?
参考資料
ご意見・「これで例えて!」を募集しています
ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。
- 説明してほしいITの言葉
- 例えてほしい場面(部活・アルバイト・家事など)
- 分かりにくかったところ・間違いのご指摘
意見箱は準備中です。