環境変数とは

カレントディレクトリが、どこであっても「どこからでも呼び出すことができる変数」だと自分は思っています。
 


理解へのStep1. 環境変数をすべて表示させてみる。

$ printenv
TERM_PROGRAM=Apple_Terminal
TERM=xterm-256color
SHELL=/bin/bash
...

 

理解へのStep2. 表示された環境変数を何でもいいので echo してみましょう。

$ echo $SHELL
/bin/bash
...

 

理解へのStep3. 別のディレクトリに移動して環境変数を表示させてみましょう。

$ cd donadona
donadona$ echo $SHELL
/bin/bash
donadona$ # 同じ値が返ってきました。
...

は?みたいな感じだと思います。もう少し噛み砕いて言うと、どのカレントディレクトリが、どこであっても取得できる変数と言いましょうか。
 


具体例「環境変数にパスを通す」とは何ぞや?

よく何かをインストールするときに「環境変数にパスを通す」ということをしているかと思います。「環境変数PATHに値を追加する」といことを言っているのですが、まずPATHを表示させてみましょう。

$ echo $PATH
/opt/local/bin:/opt/local/sbin:/opt/local/share/java/gradle:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

 

コロンで区切られたパスがでてきました。ちょっと改行で区切り直してみます。
/opt/local/bin
/opt/local/sbin
/opt/local/share/java/gradle
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
 

この環境変数PATHに指定されたディレクトリは、コマンドを打ち込んだ時に、そのコマンドがあるか確認に行くリストです。下記のような動きをします。

$ ls
# /opt/local/bin に ls コマンドはあるかな?(´・ω・`)
# /opt/local/sbin に ls コマンドはあるかな?(´・ω・`)
# /opt/local/share/java/gradle に ls コマンドはあるかな?(´・ω・`)
...
# /usr/bin に ls コマンドはあるかな?(´・ω・`)
# /usr/bin/ls ... あった!
# 実行するとえい!(`・ω・´)
file1 file2 file3
file4 file5 file6

 

~/.bash_profileとか~/.bash_loginとかに環境変数を設定しているかと思います。なぜ、ここで環境変数PATHを指定してやるかというと、このファイルがシステム起動時、ログイン時などに最初に読み込まれるからです。.bash_profileとか.bash_loginとか多すぎる
 

なので「環境変数にパスを通す」というのは、この「確認先のディレクトリを追加する」、「どこからでもコマンドを実行できるようにする」ということを言っていると考えて差し支えないかと思います。
 

ふー(´・ω・`)

まじ、この手の説明はにわかのワイにはキツい。

OSのシェルなどに設定されている、システムの属性を記録している変数。変数の名前と意味はあらかじめ決まっているため、環境変数を読み込めばシステムの設定がある程度分かるようになっている。

環境変数とは|environment variables - 意味/解説/説明/定義 : IT用語辞典

「か、かんきょうへんすうを読み込めばシステムの設定がある程度分かるようになっている!!」マジかよ、魔法使いかよwww
printenv で環境変数を表示 (`・ω・´)えい!
わからん(´;ω;`)ブワッ