【发布时间】:2014-12-05 19:01:42
【问题描述】:
我从 cygwin 3 升级到 4。 现在我有以下我以前没有经历过的奇怪行为:
我在c:\Tools\cygwin 中安装了cygwin。
bash -c pwd 从 c:\Tools\cygwin 启动时产生的输出与从任何其他目录启动时不同:
c:\Tools>cygwin\bin\bash -c pwd
/cygdrive/c/Tools
c:\Tools>cd cygwin
c:\Tools\cygwin>bin\bash -c pwd
/
这对我来说是个问题,因为直到现在我将所需的 cygwin 二进制文件捆绑在一个 bin 子目录中,以便在 Windows 上执行 shell 脚本。
那就是我有通过bin/bash -f myscript.sh调用shell脚本的批处理文件。
这些 shell 脚本会执行 cd .. 之类的操作,因为当前的工作目录是 /!
一种解决方法是将 cygwin 移动一个子目录更深,但我想了解为什么 cygwin 会这样。
[编辑]:
它变得更好:
c:\Tools\cygwin>cd bin
c:\Tools\cygwin\bin>bash -c pwd
/usr/bin
而ls 从c:\Tools\cygwin 开始时显示正确的内容:
c:\Tools\cygwin>bin\bash -c "/bin/ls -l | /bin/head -5"
total 313
-rw-r--r-- 1 robert.panzer root 53342 Oct 10 13:24 Cygwin-Terminal.ico
-rwxr-xr-x 1 robert.panzer root 63 Oct 10 13:24 Cygwin.bat
-rw-r--r-- 1 robert.panzer root 157097 Oct 10 13:24 Cygwin.ico
drwxr-xr-x+ 1 robert.panzer Domain Users 0 Oct 10 13:22 bin
【问题讨论】:
-
好拼图!任何其他
cygwin用户可以复制此问题吗?还有@RobertPazer,/bin/ls -l输出是否支持cd cygwin真的把你带到/?祝你好运。 -
和我的 cygwin 1.7.17 完全一样(除了我的路径:先是 S:\ 然后是 S:\cygwin)。
-
我不敢相信这是新的,也不是错误,因为
S:\>cygwin\bin\cygpath S:\给了我/cygdrive/s,S:\>cygwin\bin\cygpath S:\cygwin给了/。它与pwd命令完全一致。只是执行cygwin的路径翻译。 -
至少我在旧版本的 cygwin 中没有遇到过这种情况,它打包了 bash 3。所以……一定是改变了这种行为。行为是一致的,但我认为它不合逻辑。感觉就像一个 chroot 环境。
-
(我觉得这是合乎逻辑的,因为我从来没有见过 cygwin 与每个命令的(移植?)可执行文件不同的 chroot 环境。)