为什么不能将某个环境变量添加到我的 bash 配置文件中?

为什么不能将某个环境变量添加到我的 bash 配置文件中?

我在使用 Cygwin 运行名为 Phing 的 PHP 项目时遇到了问题。这不是什么大问题,因为我可以让它工作,但我正在寻找原因或修复方法,以便我可以以不同的方式执行。

为了让 Phing 与我的系统上的 Cygwin 一起工作,我必须通过控制面板向 Windows 7 环境变量添加一些路径

首先我必须添加 4 个变量。

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_HOME到我的bash_profilephing在 cygwin 中运行时,我收到此错误...

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

只要我将其保留PHING_HOME为环境变量,phing 就可以正常运行。

那么有谁知道为什么这个变量必须放在控制面板中的环境变量中而不是在我的 CYGWIN .bash_profile 文件中?

答案1

这很奇怪。我建议添加

set -x

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

答案2

您是否导出 .profile 中的变量?在 bash 中,您可以使用以下命令在 shell 本身中设置变量

VAR=value

但这只对 shell 本身可用,而不能对你从 shell 运行的命令可用。要使其成为环境变量,你必须将其“导出”到环境中

export VAR

如果愿意,你可以将这些步骤组合在一起:

export VAR=value

相关内容