Cygwin cygpath不';无法正确转换Windows路径

Cygwin cygpath不';无法正确转换Windows路径,cygwin,cygpath,Cygwin,Cygpath,命令行shell echo %PIG_HOME% C:\cygwin\usr\lib\pig C:\Users\john.doe> cd %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/

命令行shell

echo %PIG_HOME%
C:\cygwin\usr\lib\pig
C:\Users\john.doe> cd %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
john.doe@COMPUTER ~
$ cd /cygdrive/c/cygwin/usr/lib/pig/

john.doe@COMPUTER /cygdrive/c/cygwin/usr/lib/pig
$
问题:为什么
cygpath
没有将其转换为
/cygdrive/c/cygwin/usr/lib/pig

更新:

pig
文件夹的路径正确

命令行shell

echo %PIG_HOME%
C:\cygwin\usr\lib\pig
C:\Users\john.doe> cd %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
john.doe@COMPUTER ~
$ cd /cygdrive/c/cygwin/usr/lib/pig/

john.doe@COMPUTER /cygdrive/c/cygwin/usr/lib/pig
$
和Cygwin一起

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

这种设置是设计的


C:\cygwin\usr\lib
文件夹不是由任何软件包创建的,也不应由您创建。

在终端窗口中键入
mount

我的
c:\cygwin\bin
c:\cygwin\lib\
分别安装在
/usr/bin
/usr/lib
上。我怀疑您的
c:\cygwin\usr\lib
安装在
/usr/lib

因此,
c:\cygwin\usr\lib\pig
的“unix”路径将是
/usr/lib/pig

您是否尝试过选项“-m,--mixed:like--windows,但使用常规斜杠(c:/WINNT)”


事实的确如此。那么,如果cygwin无法理解cygpath输出的路径,我应该如何使用cygpath处理Windows路径呢?cygpath的目的不是让Windows路径对cygwin可读吗?在我的例子中,/usr/lib/pig实际上会在cygwin中找到该文件。在您的情况下不是吗?正如Steven Penny提到的,由于挂载的结构不明确,不应该创建
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