ログオン:
Powered by Elgg

Naganuma Tatsumi :: Blog :: EclipseとCygwinで環境変数の扱いが違う

February 18, 2009

Apache AntをWindows上で使うとき、EclipseとCygwinで環境変数の扱いが違うのがやっかいです。Windowsの環境変数の名前は大文字小文字を区別せずに扱われるのですが、取得するときには大文字小文字が混ざって取得されます。

Eclipse上でAntビルドスクリプトを実行すると、大文字小文字が区別されます。Javaの環境では区別されるのでそうなります。ところがCygwin上だと、すべて大文字に統一されてしまいます。

<project name="EnvTest" default="all">
  <target name="test">
    <property environment="env"/>
    <echo>SystemRoot:${env.SystemRoot}</echo>
    <echo>SYSTEMROOT:${env.SYSTEMROOT}</echo>
  </target>
</project>

これをEclipseで実行すると

test:
[echo] SystemRoot:C:¥Windows
[echo] SYSTEMROOT:${env.SYSTEMROOT}

と表示され、Cygwinだと

test:
[echo] SystemRoot:${env.SystemRoot}
[echo] SYSTEMROOT:C:¥Windows

と表示されます。

すっきりしないのですが、なってしまうものはしょうがないので、次のようなコードで回避しました。

<condition property="envSystemRoot" value="${env.SystemRoot}">
  <isset property="env.SystemRoot"/>
</condition>
<condition property="envSystemRoot" value="${env.SYSTEMROOT}">
  <isset property="env.SYSTEMROOT"/>
</condition>

キーワード: ant, cygwin, eclipse, java, windows

投稿者: Naganuma Tatsumi

コメントを投稿するにはログインする必要があります。