cmder 中的 path 变量只包含从系统 path 变量导入的路径,而在普通的命令 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%
但显然上面的%PATH%只包含了系统路径。
我怎样才能将用户路径添加到其中?
答案1
正如您已经发现的,%PATH%
init.bat 中确实包含用户路径。然而,问题并不完全是 cmders 的错。它与 DOS 或批处理文件有关。
例如PATH
C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\
线路
@set PATH=%OTHER_PATHS%;%PATH%
被替换为
@set PATH=C:\OTHER\PATHS;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\
显然它被解释为
@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
这导致 cmder 尝试MySQL
使用该行的其余部分作为参数来执行。
此现象还导致您的用户路径从 cmder 使用的路径中删除,从而导致您无法使用用户定义的路径。cmder 在启动时是否输出了任何内容,或者尝试执行了某些操作?
对于遇到此问题的其他用户,只需将路径用&
双引号括起来即可。因此,在我的情况下,这将是
"C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\"
这帮我解决了这个问题。
我对 DOS 和批处理的知识很少,这些只是我通过反复试验得出的结论。我刚刚发现这一点,想分享一下。
答案2
x1Bape 是正确的,但是您也可以修复它,vendor/init.bat
而不是更改 PATH。
只需修改下面的行:: Enhance Path
@set PATH=%CMDER_ROOT%\bin;%PATH%;%CMDER_ROOT%
所以它看起来像这样
@set "PATH=%CMDER_ROOT%\bin;%PATH%;%CMDER_ROOT%"
答案3
绝对错误。
cmder 实际上是一个 ConEmu。ConEmu 不会“导入”变量。相反,正如所有 Windows 应用程序一样,ConEmu 从父进程继承变量。这可以通过 ProcessExplorer 轻松检查。