Cygwin

為什麼不能將某個環境變數添加到我的 bash 配置文件中?

  • June 17, 2017

我在使用 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_profile然後phing在 cygwin 中執行時,我得到了這個錯誤……

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

只要我保留PHING_HOME為環境變數,那麼 phing 就可以正常執行。

那麼有誰知道為什麼這個 1 變數必須在控制面板的環境變數中而不是在我的 CYGWIN .bash_profile 文件中?

這是一個奇怪的。我建議添加

set -x

在 .bash_profile 的頂部。這將使 bash 列印正在執行的每個以下命令的列表。通過查看錯誤消息之前發生的情況,您應該能夠找出 PHING_HOME 混淆了哪個命令。(shell 啟動後,您可以使用 再次關閉調試輸出set +x。)

您是否正在導出 .profile 中的變數?在 bash 中,您可以使用

VAR=value

但這僅適用於外殼程序本身,不適用於您從外殼程序執行的命令。要使其成為環境變數,您必須將其“導出”到環境中

export VAR

如果您願意,可以將這些步驟組合在一起:

export VAR=value

引用自:https://serverfault.com/questions/337519