簡體   English   中英

如何擺脫cygwin的路徑前綴

[英]How to get rid of cygwin's path prefix

在 cygwin 中,為了刪除路徑中的/cydrive前綴,我做了一個這樣的安裝 -

mount -c /

在重述 cygwin 之后,當我說 pwd 時 - 它給了我類似 - /c/Work/shared/imply-1.1.1 [實際上每個 windows 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 中做錯了什么?

不要在 Cygwin 中將C:\\掛載為/

如果這對您有幫助,我打算使用類似於您想要的東西......我已經嘗試過,首先在 NT4 上,然后在 W2k 上,設置一個類似 *NIX 的單根文件系統,其中C:\\是唯一的根,其他所有設備都是某個地方的 [子] 文件夾。

猜猜,什么? 它沒有用......你不能可靠地使用 CD/DVD 驅動器,當它們沒有表示為磁盤字母時,你不能在不首先破壞掛載點的情況下斷開可移動驅動器的連接......這太麻煩了維持。

此外,十多年來,我一直在同一台機器上混合 Cygwin、Strawberry 和自定義 MSVC 構建的perl ,但我不明白/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 風格的路徑名時發出警告。 默認為關閉。

cygpath怎么樣(轉換Unix和Windows格式路徑,或者輸出系統路徑信息)...

$ pwd
/cygdrive/c/Windows/System32

$ cygpath -w $(pwd)
C:\Windows\System32

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM