0

/cygdriveCygwinでは、パスのプレフィックスを削除するために、次のようにマウントしました-

mount -c /

cygwinを再起動した後、私が言うとpwd- /c/Work/shared/imply-1.1.1[実際にはWindowsごとにc:\Work\shared\imply-1.1.1]のようなものが得られ、cygwinを使用して実行しているperlスクリプトがあり、エラーが表示されます...次のような-エラー:'C:\c\Work\shared\imply-1.1.1\dist\pivot\bin\pivot' 追加のモジュールが見つかりません/c/これは、cygwin から返されたドライブの概念であり、上記のエラーを引き起こしています (少なくとも 1 つの見方)。

それを取り除く方法について何か考えはありますか?

更新: 上記の問題をよりよく理解するために。これが起こっていることです-スクリプトファイルがあり、その内容は次のとおりです-

#!/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

CygwinC:\のようにマウントしないでください/:

これがあなたの助けになるなら、私はあなたが望むものに似たものを使用するつもりでした...私は最初にNT4で、次にW2kで、* NIXのようなシングルルートファイルシステムをセットアップしようとしましC:\た。ルートのみで、他のすべてのデバイスはどこかの [サブ] フォルダーです。

何だと思う?動作しませんでした... CD/DVD ドライブを確実に使用することはできません。ディスク文字として表されていない場合、最初にマウント ポイントを壊さずにリムーバブル ドライブを切断することはできません。維持。

また、私は Cygwin、Strawberry、およびカスタム MSVC ビルドをperl10 年以上同じマシン上で混在させてきましたが、/cygdriveプレフィックスがどのように問題を引き起こすのか理解できません。

Cygwin Bash では、次のことが期待どおりに機能します。

$ ls D:/Src

ではcmd.exe

C:\Users> c:\opt\cygwin64\bin\perl -E "opendir $h, 'D:/Src'; readdir $h と言う"

期待どおりに動作します。

CYGWIN 環境変数も参照してください。

(no)dosfilewarning- 設定されている場合、Cygwin は、ユーザーが POSIX スタイルのパス名ではなく「MS-DOS」スタイルのパス名を初めて使用したときに警告を発します。デフォルトはオフです。

于 2016-04-05T20:49:19.783 に答える
0

cygpath (Unix および Windows 形式のパスを変換する、またはシステム パス情報を出力する) についてはどうですか...

$ pwd
/cygdrive/c/Windows/System32

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