Git Bash ne voit pas mon PATH

107

Lorsque j'utilise Git Bash (sous Windows), je ne peux exécuter aucun exécutable sans spécifier son chemin complet, bien qu'il se trouve dans un dossier qui se trouve dans ma variable PATH. On dirait que bash ne le reconnaît pas. Pourquoi? Puis-je le réparer?

ulu
la source
1
Pouvez-vous montrer ce que contient exactement votre variable PATH?
choroba
Hmm comment est-ce lié à ma question? Si vous pensez qu'il est mal formé, je suis sûr que ce n'est pas le cas, car je peux exécuter les mêmes exécutables en utilisant le shell Windows standard (cmd).
ulu
@ulu: elle est liée à votre question car la variable PATH est ce qui détermine quels exécutables peuvent être trouvés ... À quoi ressemble la variable PATH depuis le shell Bash?
jalf
En particulier, il contient / e / Programmes / Tools / bin quelque part près de la fin, c'est le chemin qui m'intéresse. Peut-être que le problème est que j'essaie d'exécuter un fichier chauve-souris?
ulu

Réponses:

64

Je l'ai. En tant qu'utilisateur Windows, j'ai l'habitude de taper des noms d'exécutables sans extensions. Dans mon cas, je voulais exécuter un fichier appelé cup.bat. Dans un shell Windows, taper cupsuffirait. Bash ne fonctionne pas de cette façon, il veut le nom complet. La frappe a cup.batrésolu le problème. (Je n'ai pas pu exécuter le fichier cependant, car apparemment bash ne pouvait pas comprendre son contenu)

Une raison de plus pour passer à posh-git.

Merci @Tom de m'avoir indiqué la bonne direction.

ulu
la source
5
Vous pouvez également utiliser un alias pour raccourcir le nom:alias cup=cup.bat
Vitali Dettling
Windows utilise à la fois PATH et PATH_EXTENSIONS pour résoudre les exécutables, tandis que le monde Linux utilise uniquement PATH
Ferrybig
Votre script shell ne doit absolument rien être appelé .bat; l'extension implique un script batch Windows - en particulier sur une machine Windows.
tripleee le
Que résout posh-git? Vous n'avez plus besoin de taper l'extension?
Qwerty
@Qwerty posh est une console Powershell, y basculer signifie une console plus conviviale pour Windows avec toutes les commandes et raccourcis familiers. Et oui, comme sur n'importe quelle console Windows, vous n'avez pas besoin de taper ".exe" ou ".bat"
ulu
53

Peut-être que bash ne voit pas votre chemin Windows. Tapez env|grep PATHbash pour confirmer le chemin qu'il voit.

À M
la source
1
Il dit: 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
Essayez d'exécuter "which your_batch_file.bat" (sans guillemets). Il doit renvoyer l'emplacement de votre fichier de commandes, s'il se trouve vraiment dans le chemin.
Tom
15
comment ajouter des chemins pour que git-bash puisse les voir?
Angel
14
@ AngelS.Moreno mettez à jour ou créez un fichier ".bashrc" sous votre répertoire personnel (par exemple "vim ~ / .bashrc" dans git bash / cygwin), puis ajoutez "PATH = $ PATH: <your_path_1>: <your_path_2>:. ..: <your_path_n> "dans ce fichier. Donc, si vous vouliez que "/ usr / bin / mypath" soit dans la variable PATH, cette ligne se lirait comme suit: PATH = $ PATH: / usr / bin / mypath
Daniel
35

Suite au commentaire de @ Daniel et grâce à la réponse de @ Tom, j'ai découvert que Git bash utilisait bien le PATH mais pas les derniers chemins que j'ai récemment installés. Pour contourner ce problème, j'ai ajouté un fichier dans mon répertoire home (windows) nommé:

.bashrc

et le contenu comme suit:

PATH=$PATH:/c/Go/bin

parce que j'installais Go et que ce chemin contenait l'exécutable go.exe Now Git bash a pu reconnaître la commande:

go

Peut-être qu'un redémarrage du système aurait suffi dans mon cas, mais je suis heureux que cette solution fonctionne dans tous les cas.

Mikaël Mayer
la source
Et pour ajouter plusieurs chemins?
Nikiforos
PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer
Que voulez-vous dire par répertoire Windows? veuillez préciser.
Mian Asbat Ahmad
c:/Users/[myusername]/c'est mon répertoire personnel
Mikaël Mayer
9

Pendant que vous installez Git, vous pouvez sélectionner l'option ci-dessous, cela vous aidera à définir le chemin automatiquement.

Assistant d'installation de Git

Cela a fonctionné pour moi :)

Muthamizhchelvan. V
la source
1
@eranotzap réinstaller Git avec l'option alternative? :)
Brett Ryan
1
@eranotzap Configurez la variable Environemtal sinon réinstallez le Git
Muthamizhchelvan. V
Comment cela aide-t-il git bash à utiliser le chemin, alors que le résultat final est que git bash ne sera même pas installé?
Jules
@Jules Non, lors de l'installation de Git Bash, il vous demandera des options comme indiqué dans la capture d'écran, vous pouvez sélectionner n'importe quelle demande en fonction de vos besoins, git bash sera installé avec l'option de sélection.
Muthamizhchelvan. V
9

Créez un fichier dans C: \ Users \ USERNAME qui s'appelle config.bashrc, contenant:

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

Maintenant, déplacez le fichier sur la ligne de commande vers l'emplacement correct:

mv config.bashrc .bashrc
Smile4ever
la source
4

Redémarrez l'ordinateur après avoir ajouté une nouvelle valeur à PATH.

Pavel
la source
1
L'ordinateur n'a pas besoin d'être redémarré, la session de terminal le fait.
christianbundy
2
@christianbundy Je ne suis pas sûr, mais il semble que le redémarrage du terminal n'a pas été aidé, mais le redémarrage de l'ordinateur a aidé, alors j'ai écrit cette réponse. Le terminal de redémarrage est le premier que j'essaye.
Pavel
Une réponse si simple et totalement efficace.
bobanahalf
4

Ancienne question mais ça peut aider quelqu'un d'autre.

J'ai changé mon utilisateur PATH, après cela je viens de me déconnecter et de me reconnecter.

C'est ça! git bashchargé correctement la nouvelle valeur PATH.

Fernandosavio
la source
Est-ce possible sans fermer git bask ou se déconnecter. Je veux dire que je veux définir la variable de chemin, et je peux l'utiliser actuelle git bash
KCS
Peut - être que vous pourriez faire: export PATH=$NEW_PATH:$PATH. Et faire des choses normalement
fernandosavio
2

Je peux confirmer que le redémarrage du système garantira que le PATH défini dans la variable d'environnement dans Windows est capté par git et qu'il n'y a pas d'autre moyen automatique.

Pramod Alagambhat
la source
1

Il semble que la cause principale ici soit que Git Bash ne soit pas toujours capable d'analyser correctement la variable% USERPROFILE%. Au lieu de le rendre relatif à C: \ Users \\, il obtient la valeur C: \ Windows \ System 32 \ systemprofile \ Après avoir changé cela en une adresse pleinement qualifiée, cela fonctionne, et même si je le réinitialise par la suite, Git Bash toujours a le CHEMIN correct pour une raison quelconque.

JakobN
la source
1

Sous Windows 10, désinstallez simplement git et réinstallez-le. Il définira automatiquement la variable d'environnement pour vous. J'avais supprimé la variable d'environnement par erreur et je ne pouvais pas utiliser git dans mon IDE. La réinstallation de git a résolu ce problème.

romin21
la source
1

Dans le cas où votre git-bashde PATHcadeaux , mais pas le dernier et vous ne voulez pas un redémarrage , mais régénérer votre PATHs, vous pouvez essayer de fermer tout cmd.exe, powershell.exeet git-bash.exepuis rouvrez une fenêtre cmd.exe à partir du menu Démarrer ou de bureau et voir si l' PATHenv est mis à jour . Si vous avez changé à l'échelle du système, PATHvous devez également ouvrir une fenêtre cmd privilégiée.

Remarque: cela ne fonctionne pas avec toutes les versions de Windows et s'ouvrir cmd.exen'importe où autre que le menu Démarrer ou le bureau peut ne pas fonctionner , testé avec mes 3 ordinateurs et 2 d'entre eux fonctionnent. Je n'ai pas compris pourquoi cela fonctionne, mais comme la PATHvariable d'environnement est générée automatiquement lorsque je me connecte et me déconnecte, je ne vais pas gâcher cette variable avec la concaténation de variables.

Zhwt
la source
0

Pour moi, le plus pratique était de: 1) Créer le répertoire "bin" à la racine du lecteur C: 2) Ajouter "C: / bin;" vers PATH dans "Poste de travail -> Propriétés -> Variables d'environnement"

Mike J
la source
0

Je rencontre ce problème lorsque j'essaye d'utiliser mingw pour compiler la lib xgboost dans Win10. Enfin j'ai trouvé la solution.

Créez un fichier nommé .bashrc dans votre répertoire personnel (généralement C: \ Users \ username). Ajoutez ensuite le chemin d'accès. N'oubliez pas d'utiliser des guillemets si votre chemin contient du blanc, et n'oubliez pas d'utiliser / c / au lieu de C: /

Par exemple:

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

Flamant
la source
0

J'ai rencontré une erreur stupide de ma part. J'avais un système à l'échelle du système et un chemin de variable utilisateur défini pour mon espace de travail golang sur ma machine Windows 10. Lorsque j'ai supprimé le chemin des variables système redondantes et que j'ai déconnecté et réactivé, j'ai pu appeler des fichiers .exe dans bash et appeler go env avec succès.

Bien que OP ait été répondu, c'est un autre problème qui pourrait empêcher bash de voir vos chemins. Je viens de tester à nouveau bash avec ce problème et cela semble donner une sorte de conflit qui empêche bash de suivre l'un ou l'autre des chemins.

DébutantCrit
la source
0

Je sais que c'est une vieille question mais il y a deux types de variables d'environnement. Celui qui appartient à l'utilisateur et celui à l'échelle du système. Selon la façon dont vous ouvrez git bash (avec privilège utilisateur ou avec privilège administrateur), la variable d'environnement PATH utilisée peut provenir de vos variables utilisateur ou de variables système. Voir ci-dessous: entrez la description de l'image ici

comme indiqué dans une réponse précédente, vérifiez avec la commande env|grep PATHcelle que vous utilisez et mettez à jour votre variable en conséquence. BTW, pas besoin de redémarrer le système. Fermez et rouvrez le git bash

LionH
la source
0

Dans mon cas, c'est arrivé lors de l'installation de heroku cli et git bash, voici ce que j'ai fait pour travailler.

arrivé à cet endroit

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

et supprimez le fichier dans mon dossier heroku cas. J'ai donc supprimé le dossier et exécuté cmd. Ça fonctionne

kontashi35
la source
-1

N'échappez pas les caractères spéciaux (\) lors de l'édition / de l'ajout à votre variable $ PATH. Par exemple, un répertoire d'application dans des fichiers programme ressemblerait à ceci: PATH=$PATH:/c/Program Files (x86)/random/application

Ne fais pas ça:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

J'espère que cela t'aides.

Adam Parsons
la source
PATH=$PATH:/c/Program Files (x86)/random/application... ce n'est pas la bonne syntaxe bash pour définir le PATH. Cela ajoutera temporairement le répertoire /c/Programau chemin, puis essaiera d'exécuter le programme Filesavec des arguments (x86)/random/application. Le seul problème avec votre exemple "ne faites pas ceci" est qu'il a doublé les contre-obliques pour les crochets, lorsque les contre-obliques simples sont correctes.
Jules
-2

Pour ceux d'entre vous qui ont essayé toutes les méthodes mentionnées ci-dessus, y compris l'environnement système Windows. variables, .bashrc, .bashprofile, etc. ET peut voir le chemin correct dans 'echo $ PATH' ... J'ai peut-être une solution pour vous.

supprimer les erreurs en utilisant exec 2> / dev / null

Mon script fonctionne bien mais lançait des erreurs «commande non trouvée» ou «Aucun répertoire trouvé» même si, pour autant que je sache, les chemins étaient alignés. Donc, si vous supprimez ces erreurs (vous devrez peut-être également ajouter 'set + e'), cela fonctionne correctement.

ClickerTweeker
la source
1
Cela semble simplement ignorer les erreurs et ne pas résoudre la cause première du problème.
nmio
-3

Créez une variable utilisateur nommée Path et ajoutez comme valeur% Path%, d'après ce que j'ai remarqué, Git Bash ne voit que les variables utilisateur et non les variables système. En effectuant la procédure mentionnée, vous exposerez votre variable système dans les variables utilisateur.

broilogabriel
la source
-3

Dans les variables d'environnement de chemin Windows 7, je viens d'ajouter à la fin du chemin de la variable système

\; C: \ Program Files \ Git \ bin

et ça marche maintenant!

Kenneth Israël
la source