Windows用Gitに付属のbashシェルからCygwinに切り替えたところ、奇妙な問題が発生しました。一部の人は/cygdrive/
すべてのパスに追加するのが良いアイデアだと思いますが、私はそれが本当に醜いアイデアだと思います。以下を追加すると、この問題が部分的に解決される可能性があると判断しました。
mount --change-cygdrive-prefix /
export HOME=/c/Users/BZISAD0
私は.bashrcにありますが、PATH変数を見ると、すべてのエントリにまだ/cygdrive/が含まれています。 PATHを修正するスクリプトを書くことができるようですが、これはすでにやっているよりも問題になります。より良い方法があります。 Gitのbashシェルは以前のバージョンのCygwin(AFAIK)を使用し、どういうわけか次のように構成されているのでかなり確信しています。いいえどこでもフロントロードされます/cygdrive
。それでは、どうすればいいですか?「吸引」ノブをゼロにしますか?
答え1
/ etcで発生したエントリを見つけます。リンクGoogle検索は表示されません。ファイルからこれを制御できることがわかりました/etc/fstab
。 1行だけ追加してください。
none / cygdrive binary 0 0
そして問題は解決しなければなりません。もはや.bashrcの汚れた修正や汚れた$ PATHはありません。
答え2
答え3
cygpath(UnixおよびWindows形式のパス変換またはシステムパス情報の出力)はどうですか?
$ pwd
/cygdrive/c/Windows/System32
$ cygpath -w $(pwd)
C:\Windows\System32
答え4
言及されていないもう1つのポイントは、Cygwin DLLを使用するさまざまな方法が上記のように異なる構成を使用することです。一例として、MSYSに基づいており、Cygwinを使用するWindows用のGitがあります。
これらのバージョンで「Unix」パスにアクセスする統一された方法は/proc/cygdrive
。を使用することです。cygpath -u D:\
return/d
または/cygdrive/d
。
cygpath
パブリックプレフィックスはスイッチを使用して取得することもできます-U
。
PS:これは質問に対する答えではなく、基本的な質問(外観的な問題に加えて)を求めるので、このCWを作成します。