2009-07-28 8 views

答えて

31

Windowsでは、ホスト名は環境変数 "COMPUTERNAME"にあり、Linuxでは環境変数は "HOSTNAME"です。 antのプロパティは不変なので、次のように動作します:

<property environment="env"/> 
<property name="env.HOSTNAME" value="${env.COMPUTERNAME}"/> 
<echo message="hostname = ${env.HOSTNAME}"/> 

つまり、envという接頭辞付きのプロパティとして環境をインポートします。 env.HOSTNAMEが既に設定されている場合を除いて、env.HOSTNAMEをenv.COMPUTERNAMEの値に設定します。この場合、2行目は効果がありません。その後、ホスト名が必要なenv.HOSTNAMEを使用します。

+0

nice workaround – Michael

2

これには、環境変数$ HOSTNAME(UNIX)と%COMPUTERNAME%(Windows)を使用できます。環境変数HOSTNAMEが定義されているかどうかを調べることができます。環境変数HOSTNAMEが定義されているかどうかを確認し、定義されていない場合は環境変数COMPUTERNAMEを使用できます。フォールバックとして、 "不明"を使用することができます。

3

Unixの値をWindows版にコピーします。 $ {env.COMPUTERNAME}を使用できます。

<property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/> 
32
<exec executable="hostname" outputproperty="computer.hostname"/> 

私は、カスタムAntタスクを記述し、LinuxとWindows

+0

私はこれがより信頼できると思います。私たちがCOMPUTERNAMEを使用していたときに、一部のマシンで、値のケーシングがマシン名のケーシングと一致しませんでした。 'hostname'はこれまでのところ常に一致しています。 – fnCzar

+1

+1。私は受け入れられた答えを試して失敗しました。これは素晴らしい仕事でした。ありがとう! –

+0

同じです。これは私にとっても効果的です。ありがとう! – Curtis

-1

上で動作します。

自分でタスクを作成し始めると、Antがはるかに楽しく使いやすくなります。理解しにくい奇妙な解決策は必要ありません。タスクは、あなただけのようなものだろう書かれたら

:ローカルマシンのホスト名を見つけるための正しい方法を

<my:hostname property"hostname" /> 
8

は、AntのHostInfoタスクを使用することです。これはすべてのプラットフォームで動作し、Antによってネイティブにサポートされます。

<hostinfo prefix="host." /> 
<echo message="My hostname is '${host.NAME}'" /> 
+2

これは "正しい"答えになるはずですが、これを(私のDebian Sidシステムでは)使用すると、 '$ {host.NAME}'は 'localhost'に設定されます。 Rebseの答えに従って 'hostname'を実行すると、私が望む実際のホスト名が返されます。 –

関連する問題