0

在cygwin中,为了删除/cygdrive路径中的前缀,我做了这样的安装 -

mount -c /

重新启动 cygwin 后,当我说- 它pwd给了我类似 - /c/Work/shared/imply-1.1.1[实际上是每个窗口这是从 cygwin 返回的驱动器概念导致上述错误(至少是一种看待它的方式)。c:\Work\shared\imply-1.1.1'C:\c\Work\shared\imply-1.1.1\dist\pivot\bin\pivot'/c/

关于如何摆脱它的任何想法?

更新:为上述问题提供更好的背景。这是发生了什么 - 有一个脚本文件,其内容如下 -

#!/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中做错了什么?

4

2 回答 2

0

cygpath 怎么样(转换 Unix 和 Windows 格式路径,或者输出系统路径信息)...

$ pwd
/cygdrive/c/Windows/System32

$ cygpath -w $(pwd)
C:\Windows\System32
于 2019-12-16T12:54:42.613 回答
0

不要C:\/在 Cygwin 中那样安装:

如果这对您有任何帮助,我打算使用与您想要的类似的东西......我已经尝试过,首先在 NT4 上,然后在 W2k 上,设置一个类似 *NIX 的单根文件系统,在C:\哪里只有root,其他所有设备都是某处的[子]文件夹。

你猜怎么着?它没有用......你不能可靠地使用 CD/DVD 驱动器,当它们不表示为磁盘盘符时,你不能在不首先破坏安装点的情况下断开可移动驱动器......这太麻烦了维持。

perl此外,十多年来,我一直在同一台机器上混合 Cygwin、Strawberry 和自定义 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"

也可以按预期工作。

另请参见CYGWIN 环境变量

(no)dosfilewarning- 如果设置,Cygwin 将在用户第一次使用“MS-DOS”风格的路径名而不是 POSIX 风格的路径名时发出警告。默认为关闭。

于 2016-04-05T20:49:19.783 回答