xin*_*ing 7 path command-line environment-variables conemu cmder
cmder 中的路径变量仅包含从系统路径变量导入的那些路径。而在普通命令 shell 中,系统路径和用户路径将被连接起来。
我在 cmder_dir\vendor\init.bat 中找到了以下几行:
:: 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%
Run Code Online (Sandbox Code Playgroud)
但显然上面的 %PATH% 中只包含系统路径。
我怎样才能向它添加用户路径?
小智 6
正如您已经发现的那样,%PATH%init.bat 中确实包含用户路径。然而,问题并不完全是 cmders 的错。它与DOS或批处理文件有关。
例如PATH作为
C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\
Run Code Online (Sandbox Code Playgroud)
线
@set PATH=%OTHER_PATHS%;%PATH%
Run Code Online (Sandbox Code Playgroud)
被替换为
@set PATH=C:\OTHER\PATHS;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\
Run Code Online (Sandbox Code Playgroud)
它显然被解释为
@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
Run Code Online (Sandbox Code Playgroud)
这导致 cmder 尝试以MySQL该行的其余部分作为参数执行。
这种现象也会导致你的用户路径从cmder使用的路径中掉线,导致你无法使用用户定义的路径。cmder 启动时有没有输出什么,或者尝试执行什么?
对于遇到此问题的其他人,只需将路径&用双引号括起来即可。所以在我的情况下,这将是
"C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\"
Run Code Online (Sandbox Code Playgroud)
这为我修好了。
我对 DOS 和批处理的了解非常少,这些只是我通过反复试验得出的观察结果。我刚刚发现这个并想分享。
绝对错误的。
cmder实际上是一个ConEmu。并且 ConEmu 不会“导入”变量。相反,正如实际上所有 Windows 应用程序所做的那样,ConEmu 从父进程继承变量。这可以使用 ProcessExplorer 轻松检查。