[英]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 中做錯了什么?
如果這對您有幫助,我打算使用類似於您想要的東西......我已經嘗試過,首先在 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.