Git Bash não vê meu PATH

107

Quando uso o Git Bash (no Windows), não consigo executar nenhum executável sem especificar seu caminho completo, embora esteja localizado em uma pasta que está na minha variável PATH. Parece que o bash não o reconhece. Por quê? Posso consertar?

ulu
fonte
1
Você pode mostrar o que exatamente está em sua variável PATH?
choroba de
Hmm, como isso está relacionado à minha pergunta? Se você suspeita que ele está malformado, tenho certeza que não, pois posso executar os mesmos executáveis ​​usando o shell normal do Windows (cmd).
ulu
@ulu: está relacionado à sua pergunta porque a variável PATH é o que determina quais executáveis ​​podem ser encontrados ... Qual é a aparência da variável PATH de dentro do shell Bash?
jalf
Em particular, ele contém / e / Programas / Ferramentas / bin em algum lugar próximo ao final, este é o caminho que me interessa. Talvez o problema seja que estou tentando executar um arquivo bat?
ulu de

Respostas:

64

Entendi. Como usuário do Windows, estou acostumado a digitar nomes executáveis ​​sem extensões. No meu caso, queria executar um arquivo chamado cup.bat. Em um shell do Windows, digitar cupseria o suficiente. O Bash não funciona assim, ele quer o nome completo. Digitandocup.bat resolveu o problema. (Eu não consegui executar o arquivo, já que aparentemente o bash não conseguia entender seu conteúdo)

Mais um motivo para mudar para posh-git ..

Obrigado @Tom por me apontar a direção certa.

ulu
fonte
5
Você também pode usar um alias para encurtar o nome:alias cup=cup.bat
Vitali Dettling
O Windows usa PATH e PATH_EXTENSIONS para resolver executáveis, enquanto o mundo Linux usa apenas PATH
Ferrybig
Seu script de shell definitivamente não deve ser chamado de nada .bat; a extensão implica um script de lote do Windows - especialmente em uma máquina Windows.
tripleee
O que o posh-git resolve? Você não precisa mais digitar a extensão?
Qwerty
@Qwerty posh é um console Powershell, mudar para ele significa um console mais amigável ao Windows com todos os comandos e atalhos familiares. E sim, assim como em qualquer console do Windows, você não precisa digitar ".exe" ou ".bat"
ulu
53

Talvez o bash não veja o caminho do Windows. Digite env|grep PATHbash para confirmar o caminho que ele vê.

Tom
fonte
1
Diz: PATH = / c / Users / ulu / bin:.: / Usr / local / bin: / mingw / bin: / bin: / e / Programs / Ruby / bin: / c / Arquivos de programa / Arquivos comuns / Microsoft Shared / Windows Live: / c / Arquivos de programas (x86) / Arquivos C ommon / Microsoft Shared / Windows Live: / c / Windows / system32: / c / Windows: / c / Wind ows / System32 / Wbem: / c / Windows / System32 / WindowsPowerShell / v1.0 /: / e / Arquivos de programas (x86) / Microsoft SQL Server / 90 / Tools / binn /
ulu
2
Tente executar "which your_batch_file.bat" (sem aspas). Ele deve retornar a localização do seu arquivo em lote, se realmente estiver no caminho.
Tom
15
como adiciono caminhos para o git-bash ver?
Angel S. Moreno
14
@ AngelS.Moreno atualize ou crie um arquivo ".bashrc" em seu diretório home (por exemplo, "vim ~ / .bashrc" em git bash / cygwin), então adicione "PATH = $ PATH: <your_path_1>: <your_path_2>:. ..: <your_path_n> "para este arquivo. Então, se você quisesse que "/ usr / bin / mypath" estivesse na variável PATH, esta linha seria: PATH = $ PATH: / usr / bin / mypath
Daniel
35

Seguindo o comentário de @Daniel e graças à resposta de @Tom, descobri que o Git bash estava realmente usando o PATH, mas não os caminhos mais recentes que instalei recentemente. Para contornar esse problema, adicionei um arquivo no meu diretório inicial (windows) chamado:

.bashrc

e o conteúdo como segue:

PATH=$PATH:/c/Go/bin

porque eu estava instalando o Go e este caminho continha o executável go.exe Now Git bash foi capaz de reconhecer o comando:

go

Talvez apenas uma reinicialização do sistema fosse suficiente no meu caso, mas estou feliz que esta solução funcione em qualquer caso.

Mikaël Mayer
fonte
E para adicionar vários caminhos?
Nikiforos
PATH=$PATH:/c/Go/bin:/c/other/path
Mikaël Mayer
O que você quer dizer com diretório inicial do Windows? por favor especifique.
Mian Asbat Ahmad
c:/Users/[myusername]/esse é o meu diretório inicial
Mikaël Mayer
9

Enquanto você está instalando o Git, você pode selecionar a opção mostrada abaixo, ela o ajudará a definir o caminho automaticamente.

Assistente de instalação Git

Funcionou para mim :)

Muthamizhchelvan. V
fonte
1
@eranotzap reinstalar o Git com a opção alternativa? :)
Brett Ryan
1
@eranotzap Configure a variável de ambiente senão reinstale o Git
Muthamizhchelvan. V
Como isso ajuda o git bash a usar o caminho, quando o resultado final é que o git bash nem mesmo será instalado?
Jules,
@Jules Não, durante a instalação do Git Bash ele solicitará as opções mostradas na captura de tela, lá você pode selecionar qualquer uma das suas necessidades, o git bash será instalado com a opção de seleção.
Muthamizhchelvan. V
9

Crie um arquivo em C: \ Users \ USERNAME chamado config.bashrc, contendo:

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

Agora mova o arquivo na linha de comando para o local correto:

mv config.bashrc .bashrc
Smile4ever
fonte
4

Reinicie o computador depois de adicionar um novo valor a PATH.

Pavel
fonte
1
O computador não precisa ser reiniciado, a sessão de terminal precisa.
christianbundy
2
@christianbundy Não tenho certeza, mas parece que às vezes a reinicialização do terminal não ajudou, mas a reinicialização do computador ajudou, então escrevi esta resposta. Reiniciar o terminal é o primeiro que tento.
Pavel de
Uma resposta tão simples e totalmente eficaz.
bobanahalf
4

Pergunta antiga, mas pode ajudar outra pessoa.

Eu mudei meu usuário PATH, depois disso, acabei de fazer logoff e login novamente.

É isso! git bashcarregou o novo valor PATH corretamente.

Fernandosavio
fonte
É possível sem fechar git bask ou fazer logoff. Quero dizer, eu quero definir a variável de caminho e posso usá-la no git bash atual
KCS
Talvez você poderia fazer: export PATH=$NEW_PATH:$PATH. E fazer as coisas normalmente
fernandosavio
2

Posso confirmar que reiniciar o sistema irá certificar-se de que o PATH definido na variável de ambiente no Windows é obtido pelo git e não há outra forma automática.

Pramod Alagambhat
fonte
1

Parece que a causa raiz aqui é o Git Bash não ser capaz de sempre analisar a variável% USERPROFILE% corretamente. Em vez de torná-lo relativo a C: \ Usuários \\, ele obtém o valor C: \ Windows \ System 32 \ systemprofile \ Depois de alterar isso para um endereço totalmente qualificado, funciona e, mesmo se eu configurá-lo novamente depois, Git Bash ainda tem o PATH correto por algum motivo.

JakobN
fonte
1

No Windows 10, apenas desinstale o git e instale-o novamente. Ele definirá a variável de ambiente automaticamente para você. Eu havia removido a variável de ambiente por engano e não conseguia usar o git dentro do meu IDE. A reinstalação do git corrigiu esse problema.

romin21
fonte
1

No caso do seu git-bash's PATHpresentes, mas não mais recente e você não quer que um reboot, mas regenerar seus PATHs, você pode tentar fechar tudo cmd.exe, powershell.exee git-bash.exee reabrir uma janela cmd.exe a partir do Menu Iniciar ou Desktop e ver se o PATHenv é atualizado . Se você mudou em todo o sistemaPATH também precisa abrir uma janela cmd privilegiada.

Nota: Isso não funciona com todas as versões do Windows e abrir em cmd.exequalquer lugar diferente do Menu Iniciar ou Desktop pode não funcionar , testado com meus 3 computadores e 2 deles funciona. Não descobri por que isso funciona, mas como a PATHvariável de ambiente é gerada automaticamente quando eu faço o login e logout, não devo bagunçar essa variável com a concatenação de variável.

Zhwt
fonte
0

Para mim, o mais conveniente era: 1) Criar o diretório "bin" na raiz da unidade C: 2) Adicionar "C: / bin;" para PATH em "Meu Computador -> Propriedades -> Variáveis ​​de Ambiente"

Mike J
fonte
0

Eu encontro esse problema quando tento usar o mingw para compilar o lib xgboost no Win10. Finalmente encontrei a solução.

Crie um arquivo chamado .bashrc em seu diretório inicial (geralmente C: \ Usuários \ nome de usuário). Em seguida, adicione o caminho a ele. Lembre-se de usar aspas se o seu caminho contiver espaço em branco e lembre-se de usar / c / em vez de C: /

Por exemplo:

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

Flamingo
fonte
0

Eu cometi um erro estúpido da minha parte. Eu tinha um sistema amplo e um caminho de variável de usuário definido para meu espaço de trabalho golang na minha máquina Windows 10. Quando removi o caminho da variável de sistemas redundantes e fiz logoff e logon novamente, consegui chamar os arquivos .exe no bash e chamar go env com sucesso.

Embora o OP tenha sido respondido, este é outro problema que pode impedir o bash de ver seus caminhos. Acabei de testar o bash novamente com esse problema e parece que há algum tipo de conflito que impede o bash de seguir qualquer um dos caminhos.

NewbieCrit
fonte
0

Eu sei que é uma questão antiga, mas existem dois tipos de variáveis ​​de ambiente. Aquele pertencente ao usuário e o único sistema. Dependendo de como você abre o git bash (com privilégio de usuário ou com privilégio de administrador), a variável de ambiente PATH usada pode ser de suas variáveis ​​de usuário ou de variáveis ​​de sistema. Ver abaixo: insira a descrição da imagem aqui

como dito na resposta anterior, verifique com o comando env|grep PATHpara ver qual você está usando e atualize sua variável de acordo. BTW, não há necessidade de reiniciar o sistema. Basta fechar e reabrir o git bash

LionH
fonte
0

No meu caso aconteceu durante a instalação do heroku cli e do git bash, aqui está o que eu fiz para funcionar.

chegou a este local

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

e exclua o arquivo na pasta heroku do meu caso. Então eu deleded pasta e executei cmd. Está funcionando

kontashi35
fonte
-1

Não escape (\) caracteres especiais ao editar / adicionar à sua variável $ PATH. Por exemplo, um diretório de aplicativo em arquivos de programa seria assim: PATH=$PATH:/c/Program Files (x86)/random/application

Não faça isso:
PATH=$PATH:/c/Program\ Files\ \\(x86\\)/random/application/

Espero que isto ajude.

Adam Parsons
fonte
PATH=$PATH:/c/Program Files (x86)/random/application... esta não é a sintaxe bash correta para definir o PATH. Isso adicionará temporariamente o diretório /c/Programao caminho e, em seguida, tentará executar o programa Filescom argumentos (x86)/random/application. A única coisa errada com o seu exemplo "não faça isso" é que ele tem barras invertidas duplas para os colchetes, quando barras invertidas simples estão corretas.
Jules,
-2

Para aqueles que já experimentaram todos os métodos mencionados acima, incluindo env do sistema Windows. variáveis, .bashrc, .bashprofile, etc. E posso ver o caminho correto em 'echo $ PATH' ... Posso ter uma solução para você.

suprimir os erros usando exec 2> / dev / null

Meu script funciona bem, mas exibia os erros 'command not found' ou 'No directory found', embora, pelo que eu saiba, os caminhos estejam liberados. Portanto, se você suprimir esses erros (talvez seja necessário adicionar 'set + e'), funcionará corretamente.

ClickerTweeker
fonte
1
Isso parece ser apenas ignorar erros e não resolver a causa raiz do problema.
nmio
-3

Crie uma variável de usuário chamada Path e adicione como valor% Path%, pelo que percebi que o Git Bash só vê variáveis ​​de usuário e não variáveis ​​de sistema. Ao fazer o procedimento mencionado, você exporá sua variável de sistema nas variáveis ​​de usuário.

broilogabriel
fonte
-3

Nas variáveis ​​de ambiente do caminho do Windows 7, acabei de adicionar no final do caminho da variável do sistema

\; C: \ Arquivos de programas \ Git \ bin

e funciona agora!

Kenneth Israel
fonte