在我的 PATH 环境变量中,有
C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5
这搞砸了整个 PATH --- 后面的条目没有被考虑在内,我的 shell 做了一些奇怪的事情:
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.
很明显,&
中路是罪魁祸首,我怎么能逃脱呢?
仅仅因为你不能
echo %path%
并不意味着你的 PATH 被破坏了。PATH 环境变量的目的是提供一个文件夹列表,以在您调用程序而不指定路径时搜索程序。假设您
MyProgram.exe
在C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5
文件夹中,则无论您当前的目录是什么,都MyProgram
将正确执行。MyProgram.exe
但事实上,如果你尝试这样做
echo %path%
,那将会失败——而且应该如此。如果您将 PATH 中的值更改为 read
C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 ^& MySQL Utilities 1.5
,那么可以肯定的是,您可以安全地echo %path%
. 但是现在如果你执行MyProgram
,那么MyProgram.exe
将找不到,因为 PATH 指向了错误的文件夹名称。另一种可行的方法是修改您的 PATH 以读取
"C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5"
(引用值)。现在 PATH 功能正常,允许您MyProgram
从任何地方执行,并且现在可以安全地执行echo %path%
.但是您可能无法控制输入到 PATH 定义中的所有值。由于 PATH 工作方式的设计,它
echo %path%
在所有情况下都不是安全的。事实上,%path%
在任何命令中使用它都是不可靠的。这可能就是为什么该
path
命令旨在安全地打印出 PATH 环境变量的值而无需进行任何显式变量扩展的原因。即使
echo %path%
失败,执行path
也会打印出正确的完整定义。另一种选择是启用延迟扩展和使用
echo !path!
. 使用延迟扩展时,使用任何值总是安全的。更新:不要这样做,它似乎只是工作,但让路径指向错误的目录(参见 dbenham 的回答)!
我找到了!它是
^
,而且,最重要的是,它似乎没有任何效果,直到您在环境变量概览窗口中单击 OK —— 编辑变量并在编辑框中单击 OK 是不够的。