Git Bash non vede il mio PERCORSO


107

Quando utilizzo Git Bash (su Windows), non posso eseguire alcun eseguibile senza specificarne il percorso completo, sebbene si trovi in ​​una cartella che si trova nella mia variabile PATH. Sembra che bash non lo riconosca. Perché? Posso aggiustarlo?


1
Puoi mostrare cosa c'è esattamente nella tua variabile PATH?
choroba

Hmm come è correlato alla mia domanda? Se sospetti che sia malformato, sono sicuro che non lo è, poiché posso eseguire gli stessi eseguibili utilizzando la normale shell di Windows (cmd).
ulu

@ulu: è correlato alla tua domanda perché la variabile PATH è ciò che determina quali eseguibili possono essere trovati ... Che aspetto ha la variabile PATH all'interno della shell Bash?
jalf

In particolare, contiene / e / Programmi / Tools / bin da qualche parte vicino alla fine, questo è il percorso che mi interessa. Forse il problema è che sto cercando di eseguire un file bat?
ulu

Risposte:


64

Fatto. Come utente Windows, sono abituato a digitare nomi eseguibili senza estensioni. Nel mio caso, volevo eseguire un file chiamato cup.bat. In una shell di Windows, cupsarebbe sufficiente digitare . Bash non funziona in questo modo, vuole il nome completo. Digitandocup.bat risolto il problema. (Non sono stato in grado di eseguire il file, poiché apparentemente bash non poteva capirne il contenuto)

Un motivo in più per passare a posh-git ..

Grazie @ Tom per avermi indicato la giusta direzione.


5
Puoi anche utilizzare un alias per abbreviare il nome:alias cup=cup.bat
Vitali Dettling

Windows utilizza sia PATH che PATH_EXTENSIONS per la risoluzione degli eseguibili, mentre il mondo Linux utilizza solo PATH
Ferrybig

Il tuo script di shell non dovrebbe assolutamente essere chiamato nulla .bat; l'estensione implica uno script batch di Windows, specialmente su una macchina Windows.
tripla

Cosa risolve posh-git? Non hai più bisogno di digitare l'estensione?
Qwerty

@Qwerty posh è una console Powershell, passare a essa significa una console più compatibile con Windows con tutti i comandi e le scorciatoie familiari. E sì, proprio come su qualsiasi console Windows, non è necessario digitare ".exe" o ".bat"
ulu

53

Forse bash non vede il tuo percorso di Windows. Digitare env|grep PATHin bash per confermare ciò che il percorso che vede.


1
Dice: 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
Prova a eseguire "which your_batch_file.bat" (senza virgolette). Dovrebbe restituire la posizione del file batch, se è realmente nel percorso.
Tom

15
come aggiungo percorsi per git-bash da vedere?
Angel S. Moreno

14
@ AngelS.Moreno aggiorna o crea un file ".bashrc" nella tua directory home (ad esempio "vim ~ / .bashrc" in git bash / cygwin), quindi aggiungi "PATH = $ PATH: <your_path_1>: <your_path_2>:. ..: <your_path_n> "a questo file. Quindi, se vuoi che "/ usr / bin / mypath" sia nella variabile PATH, questa riga dovrebbe leggere: PATH = $ PATH: / usr / bin / mypath
Daniel

35

Seguendo il commento di @ Daniel e grazie alla risposta di @ Tom, ho scoperto che Git bash stava effettivamente utilizzando il PERCORSO ma non gli ultimi percorsi che ho installato di recente. Per ovviare a questo problema, ho aggiunto un file nella mia directory home (Windows) denominato:

.bashrc

e il contenuto come segue:

PATH=$PATH:/c/Go/bin

perché stavo installando Go e questo percorso conteneva l'eseguibile go.exe Now Git bash era in grado di riconoscere il comando:

go

Forse nel mio caso sarebbe stato sufficiente un semplice riavvio del sistema, ma sono contento che questa soluzione funzioni in ogni caso.


E per aggiungere più percorsi?
Nikiforos

PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer

Cosa intendi per directory home di Windows? per favore specificare.
Mian Asbat Ahmad

c:/Users/[myusername]/questa è la mia home directory
Mikaël Mayer il

9

Durante l'installazione di Git, puoi selezionare l'opzione mostrata di seguito, ti aiuterà a impostare automaticamente il percorso.

Procedura guidata di installazione di Git

Ha funzionato per me :)


1
@eranotzap reinstalla Git con l'opzione alternativa? :)
Brett Ryan

1
@eranotzap Imposta la variabile Environemtal altrimenti reinstalla Git
Muthamizhchelvan. V

In che modo questo aiuta a far sì che git bash utilizzi il percorso, quando il risultato finale è che git bash non verrà nemmeno installato?
Jules

@ Jules No, durante l'installazione di Git Bash ti chiederà le opzioni come mostrato nello screenshot, lì puoi selezionare qualsiasi richiesta secondo le tue necessità, git bash verrà installato con l'opzione di selezione.
Muthamizhchelvan. V

9

Crea un file in C: \ Users \ USERNAME che si chiama config.bashrc, contenente:

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

Ora sposta il file sulla riga di comando nella posizione corretta:

mv config.bashrc .bashrc

4

Riavvia il computer dopo aver aggiunto un nuovo valore a PATH.


1
Il computer non ha bisogno di essere riavviato, la sessione del terminale sì.
christianbundy

2
@christianbundy Non sono sicuro, ma sembra che a volte il riavvio del terminale non abbia aiutato, ma il riavvio del computer ha aiutato, quindi ho scritto questa risposta. Il terminale di riavvio è il primo che provo.
Pavel

Una risposta così semplice e completamente efficace.
bobanahalf il

4

Vecchia domanda ma può aiutare qualcun altro.

Ho cambiato il mio PATH a livello di utente, dopodiché ho appena disconnesso e effettuato nuovamente l'accesso.

Questo è tutto! git bashha caricato correttamente il nuovo valore PATH.


È possibile senza chiudere git bask o disconnettersi. Voglio dire, voglio impostare la variabile di percorso e posso usarla come git bash corrente
KCS

Forse si potrebbe fare: export PATH=$NEW_PATH:$PATH. E fai le cose normalmente
fernandosavio

2

Posso confermare che il riavvio del sistema assicurerà che il PERCORSO impostato nella variabile d'ambiente in Windows venga rilevato da git e non ci sono altri modi automatici.


1

Sembra che la causa principale qui sia che Git Bash non è in grado di analizzare sempre correttamente la variabile% USERPROFILE%. Invece di renderlo relativo a C: \ Users \\ ottiene il valore C: \ Windows \ System 32 \ systemprofile \ Dopo averlo modificato in un indirizzo completo, funziona, e anche se lo reimposto in seguito, Git Bash continua a ha il PERCORSO corretto per qualche motivo.


1

Su Windows 10, disinstalla git e installalo di nuovo. Imposta automaticamente la variabile d'ambiente. Avevo rimosso per errore la variabile d'ambiente e non potevo usare git all'interno del mio IDE. La reinstallazione di git ha risolto questo problema.


1

Nel caso in cui il vostro git-bash's PATHregali, ma non ultimo e non si vuole un riavvio, ma rigenerare il PATHs, si può provare a chiudere tutto cmd.exe, powershell.exee git-bash.exee riaprire una finestra cmd.exe dal menu Start o Desktop e vedere se PATHl'ENV viene aggiornato . Se hai modificato a livello di sistema, PATHdevi anche aprire una finestra cmd privilegiata.

Nota: questo non funziona con tutte le versioni di Windows e aprire cmd.exeovunque tranne il menu Start o il desktop potrebbe non funzionare , testato con i miei 3 computer e 2 di loro funzionano. Non ho capito perché funziona, ma poiché la PATHvariabile di ambiente viene generata automaticamente quando effettuo il login e il logout, non dovrei rovinare quella variabile con la concatenazione delle variabili.


0

Per me la cosa più conveniente era: 1) Creare la directory "bin" nella root di C: drive 2) Aggiungere "C: / bin;" a PERCORSO in "Risorse del computer -> Proprietà -> Variabili ambientali"


0

Ho riscontrato questo problema quando provo a utilizzare mingw per compilare xgboost lib in Win10. Finalmente ho trovato la soluzione.

Crea un file chiamato .bashrc nella tua home directory (di solito C: \ Users \ username). Quindi aggiungi il percorso ad esso. Ricorda di usare le virgolette se il tuo percorso contiene spazi vuoti e ricorda di usare / c / invece di C: /

Per esempio:

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


0

Mi sono imbattuto in uno stupido errore da parte mia. Avevo un sistema ampio e un percorso variabile utente impostato per il mio spazio di lavoro golang sulla mia macchina Windows 10. Quando ho rimosso il percorso della variabile di sistema ridondante e mi sono disconnesso e riacceso, sono stato in grado di chiamare i file .exe in bash e chiamare go env con successo.

Sebbene a OP sia stata data una risposta, questo è un altro problema che potrebbe impedire a bash di vedere i tuoi percorsi. Ho appena provato di nuovo bash con questo problema e sembra dare un conflitto di qualche tipo che impedisce a bash di seguire uno dei percorsi.


0

So che è una vecchia domanda ma ci sono due tipi di variabili d'ambiente. Quello di proprietà con l'utente e quello a livello di sistema. A seconda di come apri git bash (con privilegi utente o con privilegi di amministratore) la variabile d'ambiente PATH utilizzata può provenire dalle tue variabili utente o dalle variabili di sistema. Vedi sotto: inserisci qui la descrizione dell'immagine

come detto in una risposta precedente, controlla con il comando env|grep PATHper vedere quale stai usando e aggiorna la tua variabile di conseguenza. A proposito, non è necessario riavviare il sistema. Basta chiudere e riaprire il git bash


0

Nel mio caso è successo durante l'installazione di heroku cli e git bash, ecco cosa ho fatto per funzionare.

arrivato a questa posizione

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

ed elimina il file nella cartella heroku del mio caso. Quindi ho cancellato la cartella ed eseguito cmd. Funziona


-1

Non sfuggire ai caratteri speciali (\) quando modifichi / aggiungi alla tua variabile $ PATH. Ad esempio, una directory dell'applicazione nei file di programma sarebbe simile a: PATH=$PATH:/c/Program Files (x86)/random/application

Non farlo:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

Spero che questo ti aiuti.


PATH=$PATH:/c/Program Files (x86)/random/application... questa non è la sintassi bash corretta per l'impostazione del PERCORSO. Questo aggiungerà temporaneamente la directory /c/Programal percorso, quindi proverà a eseguire il programma Filescon argomenti (x86)/random/application. L'unica cosa sbagliata nell'esempio "non fare questo" è che ha doppi backslash per le parentesi, quando i singoli backslash sono corretti.
Jules

-2

Per quelli di voi che hanno provato tutti i metodi sopra menzionati, incluso il sistema Windows env. variabili, .bashrc, .bashprofile, ecc. E posso vedere il percorso corretto in 'echo $ PATH' ... Potrei avere una soluzione per te.

sopprimere gli errori usando exec 2> / dev / null

Il mio script funziona correttamente ma generava errori "comando non trovato" o "Nessuna directory trovata" anche se, per quanto ne so, i percorsi erano a filo. Quindi, se sopprimi questi errori (potresti dover aggiungere anche 'set + e'), allora funziona correttamente.


1
Questo sembra semplicemente ignorare gli errori e non risolvere la causa principale del problema.
nmio

-3

Crea una variabile utente denominata Path e aggiungi come valore% Path%, da quello che ho notato Git Bash vede solo le variabili utente e non le variabili di sistema. Eseguendo la procedura menzionata esporrete la vostra variabile di sistema nelle variabili utente.


-3

In Windows 7 Path Environment Variables ho appena aggiunto alla fine del percorso della variabile di sistema

\; C: \ Programmi \ Git \ bin

e ora funziona!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.