为什么cmder没有导入用户路径变量?

为什么cmder没有导入用户路径变量?

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 轻松检查。

相关内容