Por que o cmder não importa as variáveis do caminho do usuário?

5

A variável de caminho no cmder contém apenas os caminhos importados da variável do caminho do sistema. Enquanto estiver no shell de comando normal, o caminho do sistema e o caminho do usuário serão concatenados.

Eu encontrei no cmder_dir \ vendor \ init.bat as seguintes linhas:

:: Enhance Path
@set git_install_root=%CMDER_ROOT%\vendor\msysgit
@set PATH=%CMDER_ROOT%\bin;%git_install_root%\bin;%git_install_root%\mingw\bin;%git_install_root%\cmd;%git_install_root%\share\vim\vim74;%CMDER_ROOT%;%PATH%

Mas, obviamente, apenas o caminho do sistema está incluído no% PATH% acima.

Como eu poderia adicionar o caminho do usuário a ele?

    
por xing 07.05.2015 / 10:04

3 respostas

6

Como você já descobriu, %PATH% no init.bat inclui o caminho do usuário. O problema, no entanto, não é totalmente culpa de cmders. Tem algo a ver com o DOS ou com o arquivo de lote.

Por exemplo, com PATH as

C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\

A linha

@set PATH=%OTHER_PATHS%;%PATH%

é substituído por

@set PATH=C:\OTHER\PATHS;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\

E aparentemente é interpretado como

@set PATH=C:\OTHER\PATHS;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & 
MySQL Utilities 1.5.4 1.5\ #separate line/command

O que resultou em cmder tentando executar MySQL com o resto da linha como os parâmetros.

Esse fenômeno também fez com que o caminho do usuário caísse do caminho que o cmder usa, resultando na impossibilidade de usar os caminhos definidos pelo usuário. O cmder produziu algo ao iniciar ou tentou executar alguma coisa?

Para outras pessoas que tenham problemas com isso, basta agrupar o caminho com o & com aspas duplas. Então, no meu caso, isso seria

"C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\"

Isso consertou isso para mim.

Meu conhecimento com DOS e lote é bastante pequeno, são apenas observações que fiz através de tentativa e erro. Acabei de descobrir isso e queria compartilhar.

    
por 12.05.2015 / 23:04
4

x1Bape está certo, mas, alternativamente, você pode consertá-lo no vendor/init.bat em vez de alterar o PATH.

Basta modificar a linha em :: Enhance Path

@set PATH=%CMDER_ROOT%\bin;%PATH%;%CMDER_ROOT%

Então parece com isso

@set "PATH=%CMDER_ROOT%\bin;%PATH%;%CMDER_ROOT%"
    
por 10.02.2016 / 18:38
0

Absolutamente errado.

cmder é um ConEmu na verdade. E o ConEmu não "importa" variáveis. Em vez disso, como na verdade todos os aplicativos do Windows, o ConEmu herda variáveis do processo pai. Isso pode ser facilmente verificado com o ProcessExplorer.

    
por 07.05.2015 / 10:41