Na minha variável de ambiente PATH, há
C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5
Isso estraga todo o PATH --- as entradas que vêm depois não são levadas em consideração e meu shell faz coisas estranhas:
C:\Users\bowi>echo %PATH%
C:\other;C:\path;C:\entries;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5
Der Befehl "MySQL" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Befehl "MySQL" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Obviamente, &
o caminho é o culpado, como posso escapar disso?
Só porque você não pode
echo %path%
, não significa que seu PATH está quebrado. O objetivo da variável de ambiente PATH é fornecer uma lista de pastas para procurar um programa se você chamar um programa sem especificar o caminho.Supondo que você tenha
MyProgram.exe
naC:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5
pasta, a execuçãoMyProgram
será executada corretamenteMyProgram.exe
, independentemente de qual seja o seu diretório atual.Mas, de fato, se você tentar
echo %path%
, isso falhará - e deveria.Se você alterar o valor em seu PATH para read
C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 ^& MySQL Utilities 1.5
, com certeza poderáecho %path%
. Mas agora se você executarMyProgram
, entãoMyProgram.exe
não será encontrado porque o PATH está apontando para o nome da pasta errada.Uma alternativa que funciona é modificar seu PATH para read
"C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5"
(costar o valor). Agora o PATH funciona corretamente, permitindo que você executeMyProgram
de qualquer lugar, e agora é seguro usarecho %path%
.Mas você pode não ter controle de todos os valores inseridos em sua definição de PATH. Devido ao design de como o PATH funciona, ele simplesmente não é seguro
echo %path%
em todas as situações. Na verdade, simplesmente não é confiável usar%path%
em qualquer comando.É provavelmente por isso que o
path
comando foi projetado para imprimir com segurança o valor da variável de ambiente PATH sem ter que fazer nenhuma expansão de variável explícita.Mesmo se
echo %path%
falhar, a execuçãopath
imprimirá a definição completa correta.Outra opção é habilitar a expansão e o uso atrasados
echo !path!
. É sempre seguro trabalhar com qualquer valor quando você usa expansão atrasada.Atualização : não faça isso, parece funcionar, mas permite que o caminho aponte para o diretório errado (consulte a resposta de dbenham)!
Eu encontrei! É
^
, e, mais importante, parece não ter efeito até que você clique em OK na janela de visão geral das variáveis de ambiente -- editar a variável e clicar em OK na caixa de edição não é suficiente.