Windows ve Git Bash: Windows% PATH% sistem değişkenini okumak için Bash PATH


27

Geçenlerde Windows PATH'e manuel olarak bir Denetim Masası -> Sistem -> Gelişmiş sistem ayarları -> Ortam Değişkenleri -> Kullanıcı değişkenleri -> PATH seçeneklerine girdim. (Windows 7, 64 bit.)

Yeniden başlattıktan ve cmd.exe'yi başlattıktan sonra echo %PATH%, bunun işe yaradığını gösterir: Son zamanlarda çıktıya eklediğim dizini gördüm.

Ancak, Git Bash'i başlattıktan sonra, çıktısı echo $PATHbu dizini içermez.

export PATH=$PATH:/c/my/pathBashrc'imi ekleyebilirim ama Git Bash'in Windows'tan PATH almasını tercih ederim, bu yüzden iki yere yollar eklemeyi hatırlamama gerek kalmadı. Bu nasıl yapılabilir?

(Daha genel bir soru şudur, Git Bash'in $ PATH'ını neyin oluşturduğu nedir? Farklı yerlerde tekrarlanan birkaç giriş görüyorum,% Windows PATH% içinde olan bazı şeyler Git Bash'in $ PATH'indeydi ancak diğerleri değil. $ PATH'a dokunan Git Bash istemini alıyorum?)


Söz konusu yol önemli olabilir: C:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin.
Ahmed Fasih

Yanıtlar:


6

Bir msysgit git bash oturumu share/WinGit/Git Bash.vbs, ortam değişkenine erişmeyen veya değiştirmeyen komut dosyasını kullanır PATH( örneğin, ilgisiz bu vbs komut dosyasındaki gibi )

Git bash oturumu şu anki durumunuza ekleyecektir PATH:

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

Msysgit ile paketlenmiş olan mingw oturumunun binbaşka bir mingw kurulumundan başka bir mingw kurulumunu göz önüne almaması mümkündür : bunu başka bir (daha basit) dizini kendinize ayarlayarak kontrol edebilir PATHve git bash oturumunuzda hala görünüp görünmediğini görebilirsiniz. Değilse , PATH'a ekleyeceğiniz tüm dizinleri ilgilendiren daha genel bir konudur .


1
Bu doğru görünmüyor. Git bash'ı başlattığımda, yolu Windows PATH değişkenini bazı işlemlerle dönüştüren bir işlem tarafından kuruluyor. Fazladan öğe eklemek kadar basit değil: ';' ':' diline çevrilir, sürücü belirticileri dizin adlarına dönüştürülür ve diğer bazı dönüşümler de olur. Bazı durumlarda, bu dönüştürme yanlıştır - "c:\Program Files\Java\jdk1.8.0_25"\binWindows yolumda /c/Program Files/Java/jdk1.8.0_25"/bigit bash yoluna (ilk ve son karakterin eksik olduğuna dikkat edin) dönüştürülür ... yani soru şu, bu nasıl olur?
Jules

@Jules Bu gerçekten mümkün. 5 yılda çok şey değişti.
VonC

5

İşte benzer bir sorun için benim küçük geçici çözüm (Windows 10'da MSYS2 bash).

Fikir, gerekli yolları Unix tarzı yollara dönüştürmek ve hepsini .bashrc içinde yapılan bash $ PATH öğesine eklemek.

PATH kazanmak için gerekli yolları eklemeyin. Bunun yerine, MSYS2_WINPATH gibi Windows'ta yeni bir env oluşturun ve noktalı virgülle ayrılmış tüm Windows yol dizinlerini bu değişkene ekleyin. % MSYS2_WINPATH% öğesini% PATH% öğesine ekleyin.

Şimdi bunu .bashrc dosyasına -

################################## 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 da denedim ve .bashrc için geçici bir çözüm olmadan çalıştı. Teşekkürler!
Michael Haidl

Bunu duymak güzel :) bir şey değil.
anubhav

2

PATH değeri, kullanıcının PATH değişkeni PATH değişkeni ortamıyla birleştirildikten sonra çok uzun sürerse, Windows kullanıcı PATH değişkenini birleştirmek için sessizce başarısız olur.

Bu, yeni bir yazılım yüklendikten ve PATH'e bir şey ekledikten sonra mevcut kurulu yazılımı kırarak kolayca gerçekleşebilir. Windows başarısız!

En iyi düzeltme, Denetim Masası'ndaki PATH değişkenlerinden birini düzenlemek ve gerek duymadığınız girişleri kaldırmaktır. Ardından yeni bir CMD penceresi açın ve tüm girişlerin "echo% PATH%" içinde gösterilip gösterilmediğine bakın.


1

Dizini, yol değişkeninizin başlangıcına taşımayı deneyin. P4merge'i yükledikten sonra seninle aynı sorunu yaşadım. Performans dizini yola eklenmiş ve p4merge cmd.exe tarafından bulunmuş ancak git shell (mingw) tarafından bulunamamıştır. Verimsiz bir aramadan sonra, sadece değişkeni düzenlemeye çalıştım, böylece performans dizini ilk önce yolumda belirdi. Git kabuğunu ateşledim ve, voila, dizinin çıktısına dahil edildi $ echo $pathve $ p4mergep4merge'i açtı.

Bu biraz saçma bir cevap, çünkü niçin işe yaradığına dair bir ipucu bulamadım, ancak etrafta dolaşan başka birine yardım ederse harika.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.