2013-04-13 126 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