在cygwin中,为了删除路径中的/cydrive
前缀,我做了这样的挂载 -
mount -c /
重申cygwin之后,当我说pwd时 - 它给了我类似的东西 - /c/Work/shared/imply-1.1.1
[实际上每个窗口c:\Work\shared\imply-1.1.1
]
现在我有一个perl脚本,我正在使用cygwin运行,我看到一个错误...类似于 - 错误:找不到模块'C:\c\Work\shared\imply-1.1.1\dist\pivot\bin\pivot'
另外一个/c/
这是从cygwin返回的驱动器概念导致上述错误(至少有一种方式来查看它)。
关于如何摆脱它的任何想法?
更新:为上述问题提供更好的背景信息。这是发生了什么 - 有一个脚本文件,其内容如下 -
#!/bin/bash -eu
if [ "$#" -gt 1 ]
then
echo "usage: $0 [conf-dir]" >&2
exit 1
fi
PWD="$(pwd)"
WHEREAMI="$(dirname "$0")"
if [ "$#" -lt 1 ] || [ "x$1" = "x" ]
then
CONFDIR="$WHEREAMI"/../conf
else
CONFDIR="$1"
fi
CONFDIR="$(cd "$CONFDIR" && pwd)/pivot"
WHEREAMI="$(cd "$WHEREAMI" && pwd)"
当我回应CONFDIR和WHEREAMI的内容时,我得到以下内容 -
C:\cygdrive\c\Work\shared\imply-1.1.1\conf\pivot
C:\cygdrive\c\Work\shared\imply-1.1.1\bin\
但$ {pwd}路径应该被解析为“c:\ Work .....”
那我在cygwin中做错了什么?
答案 0 :(得分:0)
Don't mount C:\
as /
in Cygwin:
如果这对你有任何帮助,我打算使用类似于你想要的东西......我已经尝试过,首先在NT4上,然后在W2k上,设置一个类似* NIX的单根文件系统,其中
猜猜,什么?它不起作用......你不能可靠地使用 CD / DVD驱动器,当它们没有表示为磁盘字母时,你不能 在没有先破坏安装点的情况下断开可移动驱动器......维护起来太麻烦了。C:\
是唯一的根,其他所有设备都是某个[sub]文件夹。
此外,我已经在同一台机器上混合了Cygwin,Strawberry和perl
的自定义MSVC版本十多年了,我不明白/cygdrive
前缀是如何出现问题的
在Cygwin Bash中,以下内容按预期工作:
$ ls D:/Src
在cmd.exe
,
C:\Users> c:\opt\cygwin64\bin\perl -E "opendir $h, 'D:/Src'; say for readdir $h"
也按预期工作。
另见the CYGWIN environment variable:
(no)dosfilewarning
- 如果设置,Cygwin将在用户第一次使用“MS-DOS”样式路径名而不是POSIX样式路径名时发出警告。默认为关闭。
答案 1 :(得分:0)
关于cygpath(转换Unix和Windows格式的路径,或输出系统路径信息)...
$ pwd
/cygdrive/c/Windows/System32
$ cygpath -w $(pwd)
C:\Windows\System32