主机系统:Windows Server 2008 32位
已安装:Cygwin
我不知道这个问题何时开始,但我的一个Rails gems使用命令which
来确定系统安装的可执行文件的位置。在我的情况下,它返回/cygdrive/c/Windows/System32/pngcrush
- 并且文件无法访问。
在cygwin终端和Windows cmd中,我得到以下内容:
ls -la /cygdrive/c
= No such file or directory
mount
=
C:/cygwin/bin on /usr/bin type ntfs (binary,auto)
C:/cygwin/lib on /usr/lib type ntfs (binary,auto)
C:/cygwin on / type ntfs (binary,auto)
B: on /cygdrive/b type smbfs (binary,posix=0,user,noumount,auto
C: on /cygdrive/c type ntfs (binary,posix=0,user,noumount,auto)
在Windows终端中运行cd /
会将我带到C:\
cd /cygdrive
= The system cannot find the path specified
进一步编辑:
我可以使用/c
来访问这些驱动器,但不是/cygdrive/c
which
返回的驱动器。
答案 0 :(得分:3)
我在superuser.com上找到了the answer;将C:\cygwin\bin
移动到PATH变量的前面修复了问题。
答案 1 :(得分:2)
这个修复对我来说是必要的,但还不够;还需要一个修复。我收到运行Bourne shell脚本的错误,该脚本引用了localFS上的其他文件。检查了所有路径。直到我使用Sys Internals procmon进行故障排除时才注意到在路径末端没有解析的额外字符。在Notepad ++中使用View / Show Symbol / Show All Characters查看shell脚本显示Windows样式[CR] [LF]行结束,而不是Unix [LF]。 Cygwin的sh.exe在路径末尾包含[CR],导致找不到文件。我应用了cygwin的d2u来转换行结束,问题得到解决。