Git Bash nie widzi mojej ŚCIEŻKI

107

Kiedy używam Git Bash (w systemie Windows), nie mogę uruchomić żadnego pliku wykonywalnego bez określenia jego pełnej ścieżki, chociaż znajduje się on w folderze, który znajduje się w mojej zmiennej PATH. Wygląda na to, że bash go nie rozpoznaje. Czemu? Czy mogę to naprawić?

ulu
źródło
1
Czy możesz pokazać, co dokładnie znajduje się w zmiennej PATH?
choroba
Hmm, jak to się ma do mojego pytania? Jeśli podejrzewasz, że jest źle sformułowany, jestem pewien, że tak nie jest, ponieważ mogę uruchomić te same pliki wykonywalne przy użyciu zwykłej powłoki systemu Windows (cmd).
ulu
@ulu: jest to związane z twoim pytaniem, ponieważ zmienna PATH decyduje o tym, które pliki wykonywalne można znaleźć ... Jak wygląda zmienna PATH z poziomu powłoki Bash?
jalf
W szczególności zawiera / e / Programs / Tools / bin gdzieś blisko końca, to jest ścieżka, która mnie interesuje. Może problem polega na tym, że próbuję uruchomić plik bat?
ulu

Odpowiedzi:

64

Rozumiem. Jako użytkownik systemu Windows jestem przyzwyczajony do wpisywania nazw plików wykonywalnych bez rozszerzeń. W moim przypadku chciałem wykonać plik o nazwie cup.bat. W powłoce Windows cupwystarczyłoby wpisanie . Bash nie działa w ten sposób, chce podać pełne imię i nazwisko. Pisanie na maszyniecup.bat rozwiązało problem. (Nie mogłem jednak uruchomić pliku, ponieważ najwyraźniej bash nie mógł zrozumieć jego zawartości)

Jeszcze jeden powód, by przejść na posh-git ...

Dzięki @Tom za wskazanie mi właściwego kierunku.

ulu
źródło
5
Możesz również użyć aliasu, aby skrócić nazwę:alias cup=cup.bat
Vitali Dettling
Windows używa zarówno PATH, jak i PATH_EXTENSIONS do rozwiązywania plików wykonywalnych, podczas gdy świat Linuksa używa tylko PATH
Ferrybig,
Twój skrypt powłoki zdecydowanie nie powinien nazywać się niczym .bat; rozszerzenie implikuje skrypt wsadowy systemu Windows - szczególnie na komputerze z systemem Windows.
tripleee
Co rozwiązuje posh-git? Nie musisz już wpisywać rozszerzenia?
Qwerty
@Qwerty posh to konsola Powershell, przejście na nią oznacza konsolę bardziej przyjazną dla systemu Windows ze wszystkimi znanymi poleceniami i skrótami. I tak, tak jak na każdej konsoli Windows, nie musisz wpisywać „.exe” ani „.bat”
ulu
53

Być może bash nie widzi ścieżki do systemu Windows. Wpisz env|grep PATHw bash, aby potwierdzić to, co ścieżka to widzi.

Tomek
źródło
1
Mówi: PATH = / c / Users / ulu / bin:.: / Usr / local / bin: / mingw / bin: / bin: / e / Programs / Ruby / bin: / c / P rogram Files / Common Files / Microsoft Shared / Windows Live: / c / Program Files (x86) / C ommon Files / Microsoft Shared / Windows Live: / c / Windows / system32: / c / Windows: / c / Wind ows / System32 / Wbem: / c / Windows / System32 / WindowsPowerShell / v1.0 /: / e / Program Files (x86) / Microsoft SQL Server / 90 / Tools / binn /
ulu
2
Spróbuj uruchomić „which your_batch_file.bat” (bez cudzysłowów). Powinien zwrócić lokalizację pliku wsadowego, jeśli naprawdę znajduje się w ścieżce.
Tom
15
jak dodać ścieżki do wyświetlenia przez git-bash?
Angel S. Moreno
14
@ AngelS.Moreno zaktualizuj lub utwórz plik „.bashrc” w swoim katalogu domowym (np. „Vim ~ / .bashrc” w git bash / cygwin), a następnie dodaj „PATH = $ PATH: <your_path_1>: <your_path_2>:. ..: <your_path_n> ”do tego pliku. Tak więc, jeśli chcesz, aby „/ usr / bin / mypath” znajdowało się w zmiennej PATH, ten wiersz brzmiałby: PATH = $ PATH: / usr / bin / mypath
Daniel
35

Po komentarzu @ Daniela i dzięki odpowiedzi @ Toma dowiedziałem się, że Git bash rzeczywiście używa PATH, ale nie najnowszych ścieżek, które ostatnio zainstalowałem. Aby obejść ten problem, dodałem plik w moim katalogu domowym (Windows) o nazwie:

.bashrc

a treść następująca:

PATH=$PATH:/c/Go/bin

ponieważ instalowałem Go i ta ścieżka zawierała plik wykonywalny go.exe Now Git bash był w stanie rozpoznać polecenie:

go

Być może w moim przypadku wystarczyłby tylko restart systemu, ale cieszę się, że to rozwiązanie i tak działa.

Mikaël Mayer
źródło
I dodać wiele ścieżek?
Nikiforos
PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer
Co masz na myśli katalog domowy Windows? proszę sprecyzuj.
Mian Asbat Ahmad
c:/Users/[myusername]/to mój katalog domowy
Mikaël Mayer
9

Podczas instalowania Git możesz wybrać opcję pokazaną poniżej, która pomoże ci ustawić ścieżkę automatycznie.

Kreator instalacji Git

U mnie wyszło :)

Muthamizhchelvan. V
źródło
1
@eranotzap ponownie zainstalować Git z alternatywną opcją? :)
Brett Ryan
1
@eranotzap Skonfiguruj zmienną środowiskową w przeciwnym razie ponownie zainstaluj Git
Muthamizhchelvan. V
W jaki sposób pomaga to git bash w używaniu ścieżki, skoro wynikiem końcowym jest to, że git bash nawet nie zostanie zainstalowany?
Jules
@Jules Nie, podczas instalacji Git Bash zapyta Cię o opcje, jak pokazano na zrzucie ekranu, tam możesz wybrać dowolne pytanie według swoich potrzeb, git bash zostanie zainstalowany z opcją wyboru.
Muthamizhchelvan. V
9

Utwórz plik w C: \ Users \ USERNAME o nazwie config.bashrc, zawierający:

PATH=$PATH:/c/Program\ Files\ \(x86\)/Application\ with\ space

Teraz przenieś plik z wiersza poleceń do właściwej lokalizacji:

mv config.bashrc .bashrc
Smile4ever
źródło
4

Stare pytanie, ale może pomóc komuś innemu.

Zmieniłem cały mój użytkownik PATH, po czym wylogowałem się i ponownie się zalogowałem.

To jest to! git bashpoprawnie załadował nową wartość PATH.

fernandosavio
źródło
Czy to możliwe bez zamykania git bask i wylogowywania się. Chodzi mi o to, że chcę ustawić zmienną ścieżki i mogę jej użyć jako aktualny git bash
KCS
Być może można zrobić: export PATH=$NEW_PATH:$PATH. I rób rzeczy normalnie
fernandosavio
3

Uruchom ponownie komputer po dodaniu nowej wartości do PATH.

Pavel
źródło
2
Komputer nie musi być restartowany, sesja terminala tak.
christianbundy
2
@christianbundy nie jestem pewien, ale wygląda na to, że kiedyś ponowne uruchomienie terminala nie pomogło, ale ponowne uruchomienie komputera pomogło, więc napisałem tę odpowiedź. Zrestartuj terminal jest pierwszym, który próbuję.
Pavel
Taka prosta odpowiedź i całkowicie skuteczna.
bobanahalf
2

Mogę potwierdzić, że ponowne uruchomienie systemu zapewni, że PATH ustawiona w zmiennej środowiskowej w systemie Windows zostanie pobrana przez git i nie ma innego automatycznego sposobu.

Pramod Alagambhat
źródło
wystarczy zrestartować terminal, aby wybrać nową ścieżkę
Vikas Tawniya
1

Wygląda na to, że główną przyczyną jest to, że Git Bash nie zawsze jest w stanie poprawnie przeanalizować zmienną% USERPROFILE%. Zamiast ustawiać go względem C: \ Users \\, otrzymuje wartość C: \ Windows \ System 32 \ systemprofile \ Po zmianie tego na w pełni kwalifikowany adres działa, a nawet jeśli później ustawię go z powrotem, Git Bash nadal z jakiegoś powodu ma poprawną ŚCIEŻKĘ.

JakobN
źródło
1

W systemie Windows 10 po prostu odinstaluj git i zainstaluj go ponownie. Automatycznie ustawi zmienną środowiskową za Ciebie. Przez pomyłkę usunąłem zmienną środowiskową i nie mogłem używać git w moim IDE. Ponowna instalacja git rozwiązała ten problem.

romin21
źródło
1

W przypadku, gdy git-bash„s PATHprezenty, ale nie ostatni i nie chcesz restartu ale zregenerować swoje PATHs, można spróbować zamknąć wszystko cmd.exe, powershell.exei git-bash.exei ponownie otworzyć jedno okno cmd.exe z menu Start lub pulpitu i sprawdzić, czy PATHenv jest aktualizowana . Jeśli zmieniłeś cały system, PATHmusisz również otworzyć jedno uprzywilejowane okno cmd.

Uwaga: to nie działa ze wszystkimi wersjami systemu Windows i otwarte w cmd.exedowolnym miejscu innym niż menu Start lub pulpit może nie działać , testowane na moich 3 komputerach, a 2 z nich działają. Nie zrozumiałem, dlaczego to działa, ale ponieważ PATHzmienna środowiskowa jest generowana automatycznie podczas logowania i wylogowywania, nie chciałbym zepsuć tej zmiennej konkatenacją zmiennych.

Zhwt
źródło
0

Dla mnie najwygodniej było: 1) Utworzyć katalog „bin” w katalogu głównym dysku C: 2) Dodać „C: / bin;” do PATH w „Mój komputer -> Właściwości -> Zmienne środowiskowe”

Mike J.
źródło
0

Spotykam się z tym problemem, gdy próbuję użyć mingw do skompilowania biblioteki xgboost w Win10. Wreszcie znalazłem rozwiązanie.

Utwórz plik o nazwie .bashrc w swoim katalogu domowym (zwykle C: \ Users \ nazwa_użytkownika). Następnie dodaj do niego ścieżkę. Pamiętaj, aby używać cudzysłowów, jeśli ścieżka zawiera puste miejsce, i pamiętaj, aby użyć / c / zamiast C: /

Na przykład:

PATH = $ PATH: "/ c / Program Files / mingw-w64 / x86_64-7.2.0-posix-seh-rt_v5-rev1 / mingw64 / bin"

Flaming
źródło
0

Popełniłem głupi błąd z mojej strony. Miałem szeroki system i ścieżkę zmiennej użytkownika ustawioną dla mojego obszaru roboczego golang na moim komputerze z systemem Windows 10. Kiedy usunąłem nadmiarową ścieżkę zmiennej systemowej, wylogowałem się i włączyłem ponownie, mogłem z powodzeniem wywołać pliki .exe w bashu i wywołać go env.

Chociaż odpowiedziano na OP, jest to kolejny problem, który może uniemożliwić bashowi zobaczenie twoich ścieżek. Właśnie przetestowałem bash ponownie z tym problemem i wydaje się, że powoduje to jakiś konflikt, który blokuje bash przed podążaniem którąkolwiek ze ścieżek.

NewbieCrit
źródło
0

Wiem, że to stare pytanie, ale istnieją dwa rodzaje zmiennych środowiskowych. Ten należący do użytkownika i jeden w całym systemie. W zależności od tego, jak otworzysz git bash (z uprawnieniami użytkownika lub z uprawnieniami administratora), używana zmienna środowiskowa PATH może pochodzić z Ciebie Zmienne użytkownika lub ze zmiennych systemowych. Zobacz poniżej: wprowadź opis obrazu tutaj

jak wspomniano w poprzedniej odpowiedzi, sprawdź za pomocą polecenia, env|grep PATHktórego używasz, i odpowiednio zaktualizuj zmienną. BTW, nie ma potrzeby ponownego uruchamiania systemu. Po prostu zamknij i ponownie otwórz git bash

LionH
źródło
0

W moim przypadku wydarzyło się to podczas instalacji heroku cli i git bash, oto co zrobiłem, aby pracować.

dotarłem do tej lokalizacji

C:\Users\<username here>\AppData\Local

i usuń plik w moim przypadku w folderze heroku. Usunąłem więc folder i uruchomiłem cmd. To działa

kontashi35
źródło
-1

Nie zmieniaj znaczenia znaków specjalnych (\) podczas edycji / dodawania do zmiennej $ PATH. Na przykład katalog aplikacji w plikach programu wyglądałby tak: PATH=$PATH:/c/Program Files (x86)/random/application

Nie rób tego:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

Mam nadzieję że to pomoże.

Adam Parsons
źródło
PATH=$PATH:/c/Program Files (x86)/random/application... to nie jest poprawna składnia basha do ustawiania PATH. Spowoduje to tymczasowe dodanie katalogu /c/Programdo ścieżki, a następnie spróbuje uruchomić program Filesz argumentami (x86)/random/application. Jedyną wadą twojego przykładu „nie rób tego” jest to, że ma podwojone ukośniki odwrotne w nawiasach, gdy pojedyncze ukośniki odwrotne są poprawne.
Jules
-2

Dla tych z Was, którzy wypróbowali wszystkie wyżej wymienione metody, w tym system Windows env. zmienne, .bashrc, .bashprofile, itp. I widzę poprawną ścieżkę w 'echo $ PATH' ... Mogę mieć dla Ciebie rozwiązanie.

pomiń błędy za pomocą exec 2> / dev / null

Mój skrypt działa poprawnie, ale wyświetlał błędy „nie znaleziono polecenia” lub „Nie znaleziono katalogu”, mimo że, o ile wiem, ścieżki były puste. Tak więc, jeśli pominiesz te błędy (może być też konieczne dodanie „set + e”), to działa poprawnie.

ClickerTweeker
źródło
1
Wydaje się, że jest to po prostu ignorowanie błędów, a nie usuwanie pierwotnej przyczyny problemu.
nmio
-3

Utwórz zmienną użytkownika o nazwie Path i dodaj jako wartość% Path%, z tego, co zauważyłem, Git Bash widzi tylko zmienne użytkownika, a nie zmienne systemowe. Wykonując wspomnianą procedurę, ujawnisz swoją zmienną systemową w zmiennych użytkownika.

broilogabriel
źródło
-3

W Zmienne środowiskowe ścieżki systemu Windows 7 po prostu dodaję na końcu ścieżki zmiennej systemowej

\; C: \ Program Files \ Git \ bin

i działa teraz!

Kenneth Israel
źródło