環境変数ってなんなのさ?

  • プログラムがうまく回らないとき、「環境変数がさー、…」とか言う話になったり、いきなり「パス、通ってる?」となって、「パスを通すのはWindows▲ではこれこれ、こうやるんだよね」、「それでうまく行った?」、「あ、そう、よかった、解決だね」という展開になることが多い
  • これを続けていると、いつまでも、同じことの繰り返し
  • じゃあ、どこかに、環境変数のことがわかりやすく書いてあるところがあれば、それをシェアしようよ、となるのが、自然な流れなのですが、これがまた、なかなか良いのが見つからない。特に、WindowsMacの両方をカバーしてくれることが本当に少ない
  • …ということで、見つからないなら、怪しいながら、メモっておこう、というのがこの記事の主旨(ベースにしたのはこちらの冒頭記載)
  • 環境変数とは何か
    • Linux,OS X,Windowsを問わず(たいていの)コンピュータが持っているもの
  • 環境変数はなぜあるか
    • プログラム(など)を動かすときに、いろんな人がいろんなコンピュータ(OSもいろいろ、同じOSの中でもバージョンもいろいろ)で使う(こともある)わけだが、それをプログラマが全部プログラムの中で指定するのは、「ムリ!」
    • なので、コンピュータごとに違いうることは、そのコンピュータがどんな奴で、どんな状況なのか、ということの情報をプログラム(など)が問い合わせて取り込めるようにしておきたい、それさえあれば、その取り出し情報を基に、プログラムの方でどうするかを決めて動かす部分はプログラマの責任にしよう、とそういうもの
    • プログラムを動かすときに、コンピュータ環境情報を使って動かすもう一つの方法には、引数として渡すというのもある。が、あるプログラムがあって、それ自体をいじることはできないけれど、それにライブラリを自作して追加し、何かをしたいが、環境依存の情報を使いたい、というような場合には、いじれないプログラムの引数の操作はできないので、自作部分への情報渡しには環境変数を使うこともできる
  • 環境変数にはどんなものがあるか
    • 代表的なものには、OSは何?、今のユーザ名は何?、カレントディレクトリは何?、Windowsはどこにインストールされているの?、・・・・などなど
    • パス、も環境変数の一つ。これは、コンピュータの中のすべてを探すのは、無理(可能だけれど重すぎる)ので、「探し物をするなら、ここを、この順番で」ということをメモ書きしたようなもの。プログラムが動かないときの原因として有名なので、「パス」という単語だけが一人で威張っている感じもする
  • 環境変数に分類があったりなかったり
  • 環境変数がどうなっているかの調べ方、修正の仕方
    • Windows/Linux/Macのごちゃまぜ状態になっているとき、これがまた、こんがらがる元
    • OSによって違います
    • 調べ方、修正の仕方は:
      • OS上で使っているコマンドの打ち方ルール(シェル)によって違います
      • Windowsの場合は set コマンドのみ
      • Linux/Mac OS関連はシェルによってコマンドが違います