Windows&Git Bash:Windows%PATH%システム変数を読み取るためのBash PATH


27

最近、コントロールパネル->システム->詳細システム設定->環境変数->ユーザー変数-> PATHの順に選択して、Windows PATHにディレクトリを手動で追加しました。(Windows 7、64ビット。)

再起動してcmd.exeを起動するとecho %PATH%、これが機能したことが示されます。出力に最近追加したディレクトリが表示されます。

ただし、Git Bashの起動後echo $PATH、このディレクトリは出力に含まれません。

export PATH=$PATH:/c/my/pathbashrcを追加できましたが、Git BashはWindowsからPATHを取得するだけなので、2つの場所にパスを追加する必要はありません。どうすればこれを達成できますか?

(より一般的な関連の質問は、Git Bashの$ PATHを設定するものは何ですか?いくつかのエントリが異なる場所で繰り返されていることを確認します。 $ PATHに触れるGit Bashプロンプトが表示されますか?)


問題のパスが重要になる場合がありますC:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin
アーメドファシ

回答:


6

msysgit git bashセッションは、share/WinGit/Git Bash.vbs環境変数にアクセスしたり変更したりしないスクリプトを使用しますPATHたとえば、この無関係なvbsスクリプトの場合のように

git bashセッションは、単にあなたの現在の前に追加しますPATH

.:/usr/local/bin:/mingw/bin:/bin:

msysgitにパッケージ化されたmingwセッションはbin、別のmingwインストールからのものを考慮しない可能性があります。別の(より単純な)ディレクトリをに設定して確認PATHし、git bashセッションでまだ表示されるかどうかを確認できます。そうでない場合は、PATHに追加するすべてのディレクトリに関係するより一般的な問題です。


1
これは正しくないようです。git bashを起動すると、何らかのプロセスによってWindows PATH変数を明らかに変換するプロセスによってそのパスがセットアップされます。追加のアイテムを追加するほど簡単ではありません: ';' は「:」に変換され、ドライブ指定子はディレクトリ名に変換され、他のいくつかの変換も行われます。場合によっては、この変換は間違っ"c:\Program Files\Java\jdk1.8.0_25"\binています- 私のウィンドウのパスは/c/Program Files/Java/jdk1.8.0_25"/bigit bashパスに変換されます(最初と最後の文字が欠落していることに注意してください)...
ジュール

@Julesそれは確かに可能です。5年で多くのことが変わりました。
VonC

5

同様の問題(Windows 10のMSYS2 bash)に対する私の小さな回避策を次に示します。

アイデアは、必要なパスをUnixスタイルのパスに変換し、bash $ PATHに追加することです。すべてが.bashrcで行われます。

Win PATHに必要なパスを追加しないでください。代わりに、WindowsでMSYS2_WINPATHなどの新しいenv varを作成し、セミコロンで区切られたすべてのWindowsパスディレクトリをこの変数に追加します。%MSYS2_WINPATH%を%PATH%に追加します。

これを.bashrcに挿入します-

################################## Construct PATH variable ##################################

winpath=$(echo $MSYS2_WINPATH | tr ";" "\n" | sed -e 's/\\/\\\\/g' | xargs -I {} cygpath -u {})
unixpath=''

# Set delimiter to new line
IFS=$'\n'

for pth in $winpath; do unixpath+=$(echo $pth)":"; done

export PATH=$(echo $PATH:$unixpath | sed -e 's/:$//g')
unset IFS
unset unixpath
unset winpath

################################# Constructed PATH variable #################################

git-bashで試してみましたが、.bashrcの回避策なしで機能しました。ありがとう!
マイケルヘイドル

それを聞いて良い:)どういたしまして。
-anubhav

2

ユーザーのPATH変数が環境のPATH変数に連結された後、PATH値が長すぎる場合、WindowsはユーザーPATH変数の連結に暗黙的に失敗します。

これは、新しいソフトウェアがインストールされ、PATHに何かが追加された後に簡単に発生し、既存のインストール済みソフトウェアが破損する可能性があります。Windowsが失敗します!

最善の解決策は、コントロールパネルでPATH変数の1つを編集し、不要なエントリを削除することです。次に、新しいCMDウィンドウを開き、すべてのエントリが「echo%PATH%」に表示されるかどうかを確認します。


1

ディレクトリをパス変数の先頭に移動してみてください。p4mergeをインストールした後、あなたと同じ問題がありました。perforceディレクトリがパスに追加され、cmd.exeでp4mergeが見つかりましたが、git shell(mingw)は見つかりませんでした。実りのない検索の後、perforceディレクトリがパスの最初に表示されるように、変数を編集するだけでした。私はgitのシェルと、出来上がりを解雇、ディレクトリは出力に含まれており$ echo $path、かつ$ p4mergeP4MERGEを開きます。

私はそれがなぜ機能するのか分からないので、これは一種の不十分な答えですが、回避策が他の誰かを助けるならば、素晴らしいです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.