Cygwin cygpath不';无法正确转换Windows路径
命令行shellCygwin 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/
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
。