Git Bash sieht meinen PFAD nicht

107

Wenn ich Git Bash (unter Windows) verwende, kann ich keine ausführbare Datei ausführen, ohne den vollständigen Pfad anzugeben, obwohl sie sich in einem Ordner befindet, der sich in meiner PATH-Variablen befindet. Sieht so aus, als würde Bash es nicht erkennen. Warum? Kann ich das beheben?

ulu
quelle
1
Können Sie zeigen, was genau in Ihrer PATH-Variablen enthalten ist?
Choroba
Hmm wie hängt das mit meiner Frage zusammen? Wenn Sie vermuten, dass es fehlerhaft ist, ist dies sicher nicht der Fall, da ich dieselben ausführbaren Dateien mit der regulären Windows-Shell (cmd) ausführen kann.
ulu
@ulu: Es hängt mit Ihrer Frage zusammen, da die PATH-Variable bestimmt, welche ausführbaren Dateien gefunden werden können ... Wie sieht die PATH-Variable in der Bash-Shell aus?
Jalf
Insbesondere enthält es kurz vor dem Ende / e / Programme / Tools / bin. Dies ist der Pfad, an dem ich interessiert bin. Vielleicht besteht das Problem darin, dass ich versuche, eine Bat-Datei auszuführen?
Ulu

Antworten:

64

Verstanden. Als Windows-Benutzer bin ich es gewohnt, ausführbare Namen ohne Erweiterungen einzugeben. In meinem Fall wollte ich eine Datei namens ausführen cup.bat. In einer Windows-Shell cupwürde das Tippen ausreichen. Bash funktioniert nicht so, es will den vollständigen Namen. Das Tippen cup.batlöste das Problem. (Ich konnte die Datei jedoch nicht ausführen, da bash anscheinend den Inhalt nicht verstehen konnte.)

Ein Grund mehr, auf Posh-Git umzusteigen.

Danke @Tom, dass du mich in die richtige Richtung gelenkt hast.

ulu
quelle
5
Sie können auch einen Alias ​​verwenden, um den Namen zu verkürzen:alias cup=cup.bat
Vitali Dettling
Windows verwendet sowohl PATH als auch PATH_EXTENSIONS zum Auflösen von ausführbaren Dateien, während die Linux-Welt PATH
Ferrybig nur am
Ihr Shell-Skript sollte definitiv nichts heißen .bat; Die Erweiterung impliziert ein Windows-Batch-Skript - insbesondere auf einem Windows-Computer.
Tripleee
Was löst Posh-Git? Müssen Sie die Erweiterung nicht mehr eingeben?
Qwerty
@Qwerty posh ist eine Powershell-Konsole. Wenn Sie zu dieser Konsole wechseln, erhalten Sie eine Windows-freundlichere Konsole mit allen bekannten Befehlen und Verknüpfungen. Und ja, genau wie auf jeder Windows-Konsole müssen Sie nicht ".exe" oder ".bat" eingeben
ulu
53

Vielleicht sieht bash Ihren Windows-Pfad nicht. Geben Sie env|grep PATHin bash zu bestätigen , was Weg es sieht.

Tom
quelle
1
Es heißt: PATH = / c / Users / ulu / bin:.: / Usr / local / bin: / mingw / bin: / bin: / e / Programme / Ruby / bin: / c / Programmdateien / Gemeinsame Dateien / Microsoft Shared / Windows Live: / c / Programme (x86) / Allgemeine Dateien / Microsoft Shared / Windows Live: / c / Windows / system32: / c / Windows: / c / Windows / System32 / Wbem: / c / Windows / System32 / WindowsPowerShell / v1.0 /: / e / Programme (x86) / Microsoft SQL Server / 90 / Tools / binn /
ulu
2
Versuchen Sie, "which your_batch_file.bat" (ohne Anführungszeichen) auszuführen. Es sollte den Speicherort Ihrer Batch-Datei zurückgeben, wenn sie sich wirklich im Pfad befindet.
Tom
15
Wie füge ich Pfade hinzu, damit Git-Bash sie sieht?
Angel S. Moreno
14
@ AngelS.Moreno aktualisieren oder erstellen Sie eine ".bashrc" -Datei in Ihrem Home-Verzeichnis (z. B. "vim ~ / .bashrc" in git bash / cygwin) und fügen Sie dann "PATH = $ PATH: <Ihr_Pfad_1>: <Ihr_Pfad_2>: hinzu. ..: <Ihr_Pfad_n> "zu dieser Datei. Wenn Sie also möchten, dass "/ usr / bin / mypath" in der PATH-Variablen enthalten ist, lautet diese Zeile: PATH = $ PATH: / usr / bin / mypath
Daniel
35

Nach dem Kommentar von @ Daniel und dank der Antwort von @ Tom fand ich heraus, dass Git Bash zwar den PATH verwendet, aber nicht die neuesten Pfade, die ich kürzlich installiert habe. Um dieses Problem zu umgehen, habe ich in meinem Home-Verzeichnis (Windows) eine Datei mit dem Namen hinzugefügt:

.bashrc

und der Inhalt wie folgt:

PATH=$PATH:/c/Go/bin

weil ich Go installiert habe und dieser Pfad die ausführbare Datei enthielt go.exe Jetzt konnte Git bash den Befehl erkennen:

go

Vielleicht hätte in meinem Fall nur ein Neustart des Systems gereicht, aber ich bin froh, dass diese Lösung auf jeden Fall funktioniert.

Mikaël Mayer
quelle
Und um mehrere Pfade hinzuzufügen?
Nikiforos
PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer
Was meinst du mit Windows-Ausgangsverzeichnis? Bitte angeben.
Mian Asbat Ahmad
c:/Users/[myusername]/Das ist mein Home-Verzeichnis
Mikaël Mayer
9

Während Sie Git installieren, können Sie die unten gezeigte Option auswählen. Dies hilft Ihnen dabei, den Pfad automatisch festzulegen.

Git-Installationsassistent

Es hat für mich geklappt :)

Muthamizhchelvan. V.
quelle
1
@eranotzap Git mit der alternativen Option neu installieren? :)
Brett Ryan
1
@eranotzap Richten Sie die Umgebungsvariable ein, andernfalls installieren Sie den Git
Muthamizhchelvan neu. V
Wie hilft dies, Git Bash dazu zu bringen, den Pfad zu verwenden, wenn das Endergebnis ist, dass Git Bash nicht einmal installiert wird?
Jules
@Jules Nein, während der Installation von Git Bash werden Sie nach den im Screenshot gezeigten Optionen gefragt. Dort können Sie eine beliebige Frage nach Ihren Wünschen auswählen. Git Bash wird mit der Auswahloption installiert.
Muthamizhchelvan. V
9

Erstellen Sie eine Datei in C: \ Users \ USERNAME mit dem Namen config.bashrc, die Folgendes enthält:

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

Verschieben Sie nun die Datei in der Befehlszeile an den richtigen Speicherort:

mv config.bashrc .bashrc
Smile4ever
quelle
4

Starten Sie den Computer neu, nachdem Sie PATH einen neuen Wert hinzugefügt haben.

Pavel
quelle
1
Der Computer muss nicht neu gestartet werden, die Terminalsitzung jedoch.
Christianbundy
2
@christianbundy Ich bin mir nicht sicher, aber es sieht so aus, als hätte ein Neustart des Terminals nicht geholfen, aber ein Neustart des Computers hat geholfen, also habe ich diese Antwort geschrieben. Terminal neu starten ist das erste, das ich versuche.
Pavel
Eine so einfache Antwort und völlig effektiv.
Bobanahalf
4

Alte Frage, aber es kann jemand anderem helfen.

Ich habe meinen PATH benutzerweit geändert, danach habe ich mich einfach abgemeldet und wieder angemeldet.

Das ist es! git bashhat den neuen PATH-Wert korrekt geladen.

fernandosavio
quelle
Ist es möglich, ohne Git Bask zu schließen oder sich abzumelden? Ich meine, ich möchte Pfadvariable setzen, und ich kann es verwenden aktuelle Git Bash
KCS
Vielleicht könnten Sie tun : export PATH=$NEW_PATH:$PATH. Und mach Sachen normal
fernandosavio
2

Ich kann bestätigen, dass durch einen Neustart des Systems sichergestellt wird, dass der in der Umgebungsvariablen in Windows festgelegte Pfad von git erfasst wird und es keinen anderen automatischen Weg gibt.

Pramod Alagambhat
quelle
1

Es scheint, dass die Hauptursache hier darin liegt, dass Git Bash die Variable% USERPROFILE% nicht immer korrekt analysieren kann. Anstatt es relativ zu C: \ Users \\ zu machen, erhält es den Wert C: \ Windows \ System 32 \ systemprofile \ Nachdem es in eine vollständig qualifizierte Adresse geändert wurde, funktioniert es, und selbst wenn ich es später zurücksetze, bleibt Git Bash erhalten hat aus irgendeinem Grund den richtigen Pfad.

JakobN
quelle
1

Deinstallieren Sie unter Windows 10 einfach git und installieren Sie es erneut. Die Umgebungsvariable wird automatisch für Sie festgelegt. Ich hatte versehentlich die Umgebungsvariable entfernt und konnte git in meiner IDE nicht verwenden. Durch die Neuinstallation von git wurde dieses Problem behoben.

romin21
quelle
1

Wenn Ihr git-bash‚s PATHGeschenke , aber nicht letzte und Sie wollen keinen Neustart , sondern regenerieren PATHs, können Sie versuchen , alle zu schließen cmd.exe, powershell.exeund git-bash.exeund ein cmd.exe Fenster aus dem Startmenü oder Desktop - wieder öffnen und sehen , ob das PATHenv aktualisiert . Wenn Sie systemweit geändert haben, müssen PATHSie auch ein privilegiertes cmd-Fenster öffnen.

Hinweis: Dies funktioniert nicht mit allen Windows-Versionen und das Öffnen an einer cmd.exeanderen Stelle als dem Startmenü oder dem Desktop funktioniert möglicherweise nicht. Es wurde mit meinen 3 Computern getestet und 2 davon funktionieren. Ich habe nicht herausgefunden, warum dies funktioniert, aber da die PATHUmgebungsvariable beim An- und Abmelden automatisch generiert wird, möchte ich diese Variable nicht durch die Verkettung von Variablen durcheinander bringen.

Zhwt
quelle
0

Für mich war es am bequemsten, 1) das Verzeichnis "bin" im Stammverzeichnis von Laufwerk C: 2 zu erstellen. 2) "C: / bin" hinzuzufügen. zu PATH in "Arbeitsplatz -> Eigenschaften -> Umgebungsvariablen"

Mike J.
quelle
0

Ich stoße auf dieses Problem, wenn ich versuche, mit mingw die xgboost-Bibliothek in Win10 zu kompilieren. Endlich habe ich die Lösung gefunden.

Erstellen Sie eine Datei mit dem Namen .bashrc in Ihrem Home-Verzeichnis (normalerweise C: \ Users \ username). Fügen Sie dann den Pfad hinzu. Denken Sie daran, Anführungszeichen zu verwenden, wenn Ihr Pfad leer ist, und denken Sie daran, / c / anstelle von C: / zu verwenden

Beispielsweise:

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

Flamingo
quelle
0

Ich bin meinerseits auf einen dummen Fehler gestoßen. Ich hatte einen systemweiten und einen Benutzervariablenpfad für meinen Golang-Arbeitsbereich auf meinem Windows 10-Computer festgelegt. Als ich den Variablenpfad für redundante Systeme entfernte und mich ab- und wieder anmeldete, konnte ich EXE-Dateien in Bash aufrufen und go env mit Erfolg aufrufen.

Obwohl OP beantwortet wurde, ist dies ein weiteres Problem, das Bash davon abhalten könnte, Ihre Pfade zu sehen. Ich habe gerade Bash erneut mit diesem Problem getestet und es scheint einen Konflikt zu geben, der Bash daran hindert, einem der Pfade zu folgen.

NewbieCrit
quelle
0

Ich weiß, dass es eine alte Frage ist, aber es gibt zwei Arten von Umgebungsvariablen. Derjenige, der dem Benutzer gehört, und der eine, der systemweit ist. Je nachdem, wie Sie git bash öffnen (mit Benutzer- oder Administratorrechten), kann die verwendete Umgebungsvariable PATH von Ihren Benutzervariablen oder von Systemvariablen stammen. Siehe unten: Geben Sie hier die Bildbeschreibung ein

Überprüfen Sie, wie in einer vorherigen Antwort erwähnt, mit dem Befehl env|grep PATH, welche Sie verwenden, und aktualisieren Sie Ihre Variable entsprechend. Übrigens muss das System nicht neu gestartet werden. Schließen Sie einfach die Git Bash und öffnen Sie sie erneut

LionH
quelle
0

In meinem Fall geschah es während der Installation von Heroku Cli und Git Bash. Hier ist, was ich getan habe, um zu arbeiten.

bin an diesen Ort gekommen

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

und löschen Sie die Datei in meinem Fall Heroku Ordner. Also habe ich den Ordner gelöscht und cmd ausgeführt. Es funktioniert

kontashi35
quelle
-1

Entkommen Sie beim Bearbeiten / Hinzufügen Ihrer $ PATH-Variablen keinen (\) Sonderzeichen. Ein Anwendungsverzeichnis in Programmdateien sieht beispielsweise folgendermaßen aus: PATH=$PATH:/c/Program Files (x86)/random/application

Tu das nicht:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

Hoffe das hilft.

Adam Parsons
quelle
PATH=$PATH:/c/Program Files (x86)/random/application... dies ist keine korrekte Bash-Syntax zum Einstellen des PATH. Dadurch wird das Verzeichnis vorübergehend /c/Programzum Pfad hinzugefügt und anschließend versucht, das Programm Filesmit Argumenten auszuführen (x86)/random/application. Das einzige, was an Ihrem Beispiel "Mach das nicht" falsch ist, ist, dass es die umgekehrten Schrägstriche für die Klammern verdoppelt hat, wenn einzelne umgekehrte Schrägstriche korrekt sind.
Jules
-2

Für diejenigen unter Ihnen, die alle oben genannten Methoden einschließlich Windows-Systemumgebung ausprobiert haben. Variablen, .bashrc, .bashprofile usw. UND können den richtigen Pfad in 'echo $ PATH' sehen ... Ich habe möglicherweise eine Lösung für Sie.

Unterdrücke die Fehler mit exec 2> / dev / null

Mein Skript läuft einwandfrei, hat aber Fehler "Befehl nicht gefunden" oder "Kein Verzeichnis gefunden" ausgelöst, obwohl die Pfade, soweit ich das beurteilen kann, leer waren. Wenn Sie diese Fehler unterdrücken (möglicherweise muss auch 'set + e' hinzugefügt werden), funktioniert dies ordnungsgemäß.

ClickerTweeker
quelle
1
Dies scheint nur Fehler zu ignorieren und die Grundursache des Problems nicht zu lösen.
Nmio
-3

Erstellen Sie eine Benutzervariable mit dem Namen Path und fügen Sie als Wert% Path% hinzu. Wie ich bemerkt habe, sieht Git Bash nur Benutzervariablen und keine Systemvariablen. Durch Ausführen des oben beschriebenen Verfahrens wird Ihre Systemvariable in den Benutzervariablen verfügbar gemacht.

Broilogabriel
quelle
-3

In Windows 7-Pfadumgebungsvariablen füge ich nur am Ende des Systemvariablenpfads hinzu

\; C: \ Programme \ Git \ bin

und es funktioniert jetzt!

Kenneth Israel
quelle