2013-04-13 173 views
2

命令行shellcygpath不轉換的Windows路徑正確

echo %PIG_HOME% 
C:\cygwin\usr\lib\pig 

cygwin的

echo $PIG_HOME 
C:\cygwin\usr\lib\pig 

echo $(cygpath -u "$PIG_HOME") 
/usr/lib/pig 

cd $(cygpath -u "$PIG_HOME") 
-bash: cd: /usr/lib/pig: No such file or directory 

問:爲什麼cygpath不將其轉換爲/cygdrive/c/cygwin/usr/lib/pig

UPDATE:

pig文件夾的路徑是正確的。

命令行殼

C:\Users\john.doe> cd %PIG_HOME% 
C:\cygwin\usr\lib\pig> 

cygwin的

[email protected] ~ 
$ cd /cygdrive/c/cygwin/usr/lib/pig/ 

[email protected] /cygdrive/c/cygwin/usr/lib/pig 
$ 

回答

2

使用Cygwin,

C:\cygwin\lib\pig = /usr/lib/pig 

C:\cygwin\usr\lib\pig = /cygdrive/c/usr/lib/pig 

此設置是由設計。

C:\cygwin\usr\lib文件夾不是由任何軟件包創建的,也不應由您創建。

0

在終端窗口輸入mount

我的c:\cygwin\binc:\cygwin\lib\分別安裝在/usr/bin/usr/lib。我懷疑你的c:\cygwin\usr\lib安裝在/usr/lib

因此,c:\cygwin\usr\lib\pig的「unix」路徑將爲/usr/lib/pig

+0

事實確實如此。那麼,如果cygwin無法理解cygpath輸出的路徑,我該如何使用cygpath來使用Windows路徑? cygwin的目的不是使cygwin的Windows路徑可讀嗎? – ATN

+0

在我的情況下,/ usr/lib/pig實際上會在cygwin中找到該文件。這不是你的情況嗎? – stringsn88keys

+1

正如Steven Penny所說,由於mount的模糊結構,'C:\ cygwin \ usr \ lib'不應該被創建:'/ usr/lib \ pig'會指向'C:\ cygwin \ usr \ lib \ pig'和'C:\ cygwin \ lib \ pig',這是一個無法工作的配置,原因很明顯(至少有人理解cygdrive是如何掛載的)。因此'/ usr/lib/pig'不適用於我,因爲我只有'C:\ cygwin \ usr \ lib \ pig'文件夾,而不是'C:\ cygwin \ lib \ pig'文件夾。 – ATN