座敷牢日誌

都落ちした元SEがソフトウェアやネット関連のことを書いています

Windowsの環境変数を整理する

f:id:zashikiro:20140205003609p:plain

これは、たとえばなしである。

ユーザ/システム環境変数を設定することで起きる悲劇がある

WindowsでGitを導入する際に有力な候補と思われる Git for Windows をインストールしたあと、コマンドラ インから使いやすくするために、実行ファイルがあるディレクトリを環境変数へ追加す る、とする。

set GIT_HOME=C:\Program files\Git\bin
set PATH=%GIT_HOME%;%PATH%

そのあと、MinGWのmsysのシェルを起動して、msysが持ってるコマンド lsfind でもなんでもいいのだが、実行すると、応答がなくなってしまうのだ。

原因はわからないが、msys環境とGit for Windowsが同梱しているコマンドの相性の問題 と思う。ちなみにcygwin環境で同じ問題は起きなかった。

これは、たとえばなしである。

問題の引き金は、システム全体やユーザごとのログインセッションに影響を及ぼす環境 変数を設定したことだった。

書籍でもネットの情報でも、プログラミングの初心者向けの解説して、コンパイラやラ ンタイムがあるディレクトリを PATH へ追加するように薦めていることが多い。

でもそれが本当にベストな方法なんだろうか。

環境変数を設定しなくてもいい場面はある

Javaの開発を始めるためにEclipseを用意する人は多いと思うが、Eclipse上で使う分に はユーザ・システムの環境変数を設定する必要はない。

MinGW + Eclipse + CDT でC/C++の開発をするときも、同様である。Eclipse側がうまい ことやってくれる。

Visual StudioやQtCreatorでも同様である。わざわざコンパイラ等がある場所を PATH へ追加する必要はない。

コマンドラインで作業したいと思ったなら、そういうショートカットが用意されている こともある。 Qtであれば、プログラムメニューのなかに「Qt 5.2.0 for Desktop (MinGW 4.8 32 bit)」 というショートカットがある。クリックすると、PATHが通った状態のコマンドプロンプ トが起動するが、この設定がシステムやログインセッションに及ぶことはない。

それでも環境変数が設定してあったほうがいいこともある

EclipseVisual Studio のような、限られた環境で完結する場合は、わざわざシステム 全体に影響を与える設定を追加する必要はないと思う。

しかし、いつでもどこでも呼び出せるようにしておきたいものは? pythonとか。そうい うのは仕方ないので、ユーザ環境変数に追加してやる。

でも、出来るだけ環境を小さい単位で完結させておいたほうが問題は起きにくいし、問 題の切り分けもやりやすいはずなのだ。たとえば、Vim上でだけ使いたいプログラムがあっ たとした場合、Vimの設定で環境変数を設定することができる。

次のようなコードを _vimrc へ追加しておけばいい。

let $PATH = 'C:\usr\bin;' . $PATH

僕は横着してcygwinの実行ファイルがある場所を PATH に追加してしまったけれど、 文字コードやらファイルパスの違いetcで思うようにならないことがけっこうある。

まとめ

職場では未だにWindows XPを使わされていて、環境変数PATH を含めて、その他も グチャグチャだ。なにか問題があったときには、勘や慣れでなんとかなってはいるが、限度がある。

XPのサポート切れの関連で、まもなくWindows7か8にリプレースされる予定である。今後 はもうちょっとうまくやりたいという思いでこの記事を書いた。