为什么不能将某个环境variables添加到我的bashconfiguration文件中?

我在运行一个名为Phing和Cygwin的PHP项目时遇到了问题。 这不是一个大问题,因为我可以使它工作,但我正在寻找一个理由或修复,所以我可以做不同的事情。

为了让Phing能够在我的系统上使用Cygwin,我必须通过控制面板添加一些path到Windows 7环境variables

起初我不得不添加4个variables。

PHP_COMMAND = /cygdrive/e/Server/php/php.exe PHING_HOME = E:\Server\phing PHP_CLASSPATH = E:\Server\phing\classes PATH : add this to the end ;E:\Server\phing\bin 

我宁愿做什么,但它将这些添加到我的.bash_profile cygwin/home/jason/.bash_profile

现在我能够成功地将4个项目中的3个添加到我的bash_profile

 PHP_COMMAND=:/cygdrive/e/Server/php/php.exe PHP_CLASSPATH=:/cygdrive/e/Server/phing/classes PATH=${PATH}:/cygdrive/e/Server/phing/bin 

然后我不得不PHING_HOME=:E:\Server\phing到我的Windows环境设置

现在我不知道为什么,当我尝试将PHING_HOMEpath添加到我的PHING_HOME ,然后在cygwin中运行phing ,然后我得到这个错误…

Could not open input file: /cygdrive/e/Server/phing/bin/phing.php

只要我保持PHING_HOME作为一个环境variables,然后phing运行良好。

所以,有没有人知道为什么这1variables必须在控制面板中的环境variables,而不是我的CYGWIN .bash_profile文件?

这是一个奇怪的。 我build议添加

 set -x 

在.bash_profile的顶部。 这将使bash打印出每个正在执行的命令的列表。 通过查看错误消息之前正在发生的事情,您应该能够找出哪些命令被PHING_HOME弄糊涂了。 (在shell启动之后,您可以使用set +x再次closuresdebugging输出。)

你在.profile中导出variables吗? 在bash中,你可以在shell中设置一个variables

 VAR=value 

但是只有shell本身才可用,而不是从shell运行的命令。 要使其成为环境variables,您必须将其“导出”到环境中

 export VAR 

如果你喜欢,你可以把这些步骤结合起来:

 export VAR=value