全局变量但仍无法在linux中访问

时间:2010-10-05 18:34:44

标签: linux unix shell ant

我试图在我的ant文件中使用一些全局变量。 当我通过终端登录时。我可以访问像JAVA_HOME这样的变量 但是当我试图通过ant命令访问变量时,我无法找到它们。 在.cshrc中声明的全局变量

setenv JAVA_HOME jdk_full_path

使用变量的ant代码。

<property environment="env"/>
<property name="ear" value= "true"/>
<property name="home" value="${env.HOME}"/>
<property name="java_home" value="${env.JAVA_HOME}"/>

我可以访问home变量,但我找不到JAVA_HOME变量,我正在通过eclipse执行这个ant

请建议我在哪里申报变量,以便我可以访问它们

4 个答案:

答案 0 :(得分:2)

问题可能是Eclipse在其环境中没有JAVA_HOME

尝试注销并重新登录,然后运行Eclipse。

或者,打开一个终端,然后从那里运行Eclipse。

答案 1 :(得分:0)

.cshrc文件仅在启动新的C shell时运行,不适用于全局变量。由于您没有从C shell启动Eclipse,因此它不会看到您在那里设置的任何变量。

在使用bash启动eclipse的情况下,尝试使用〜/ .login文件或/ etc / profile文件。这两个文件只在用户登录时加载一次,因此它们应该影响所有内容。您可能需要重新启动甚至重新启动才能使这些文件的更改生效。

答案 2 :(得分:0)

环境变量是通过流程执行继承的,它们不是全局的。因此,当您编辑shell的RC文件以添加变量时,它仅对修改后执行的shell以及从这些shell执行的程序生效。如果您从KDE / Gnome启动Eclipse,并且在进行更改之前启动了KDE / Gnome,那么KDE / Gnome从未有过定义,因此Eclipse也没有。

我建议注销并重新登录。另外,根据您的默认shell设置,您可能会发现KDE / Gnome是通过bash或其他方式启动的,这意味着您需要修改.bashrc而不是.cshrc

答案 3 :(得分:0)

您应该在以下某个文件中定义此变量:

〜/ .profile或〜/ .bash_profile仅在登录shell时运行,即首次登录系统时。

每次打开一个新的非登录bash shell(如xterm)时都会运行

〜/ .bashrc文件

因此,您应该在此文件中添加以下行:

  

导出JAVA_HOME = jdk_full_path

您必须重新登录才能获得更改