【发布时间】:2015-06-06 16:41:00
【问题描述】:
我见过各种各样的问题,但我已经为此奋斗了一整天,所以请给我一些帮助:)
小故事:我在系统变量面板和 cmd 中有不同的 PATH 变量。无法运行exe文件?
更长的故事:我正在尝试安装 Ruby。尝试了不同的版本,但问题是一样的:我已经更新了我的 PATH 值,Ruby 在那里。 但是在 cmd 中使用它时,无法识别 ruby。 echo %PATH% 与环境变量面板中的值不同!
第一个附件:环境变量面板:
用户变量的值:
C:\Users\morifey\nvmw\nodejs\v0.10.36;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files\Intel\WiFi\bin\";"C:\Program Files\Common Files\Intel\WirelessCommon\";"C:\Program Files (x86)\Skype\Phone\";"C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86";"C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64";"C:\Program Files\nodejs\";C:\wamp\bin\php\php5.5.12;C:\ProgramData\ComposerSetup\bin;"C:\Program Files\TortoiseGit\bin";"C:\Program Files (x86)\Git\cmd";"C:\Program Files\Intel\WiFi\bin\";"C:\Program Files\Common Files\Intel\WirelessCommon\";C:\Users\morifey\AppData\Roaming\npm;C:\Ruby21\bin
系统变量的值:
C:\Ruby21\bin;C:\Users\morifey\nvmw\nodejs\v0.10.36;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;"C:\Program Files\Intel\WiFi\bin\";"C:\Program Files\Common Files\Intel\WirelessCommon\";"C:\Program Files (x86)\Skype\Phone\";"C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86";"C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64";"C:\Program Files\nodejs\";C:\wamp\bin\php\php5.5.12;C:\ProgramData\ComposerSetup\bin;"C:\Program Files\TortoiseGit\bin";"C:\Program Files (x86)\Git\cmd";"C:\Program Files\Intel\WiFi\bin\";"C:\Program Files\Common Files\Intel\WirelessCommon\";"C:\Users\morifey\AppData\Roaming\npm";%SystemRoot%\system32;%SystemRoot%
我将它们与 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment 进行比较 - 它们都一样。
但是我运行 cmd 并使用 echo %PATH%。结果:
C:\Users\morifey\nvmw\nodejs\v0.10.36;C:\ProgramData\Oracle\Java\javapath;C:\Win
dows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPow
erShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Int
el\WirelessCommon\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\In
tel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C
:\Program Files\nodejs\;C:\wamp\bin\php\php5.5.12;C:\ProgramData\ComposerSetup\b
in;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Git\cmd;C:\Program Fi
les\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Users
\morifey\AppData\Roaming\npm
缺少 Ruby! 以管理员身份运行和不以管理员身份运行都是一样的(实际上我只有一个管理员用户)。
我尝试过设置路径(通过 set 或 setx),同时更改注册表和环境变量 - 没有任何效果。我尝试在有空格的路径中添加引号 (") - 没有区别。
除了如果我以管理员身份运行 cmd 并使用 setx PATH "%PATH%;C:\Ruby21\bin"!然后,echo %PATH% 返回 real(更新的)路径,我可以在这个 cmd 中运行ruby ONLY。如果我关闭它,然后以管理员身份重新打开它 - 更改将丢失。
请给我任何建议如何处理?我只需要运行 Ruby :)
Windows 7 Ultimate,Service Pack 1,64 位; 下载的 Ruby(来自http://rubyinstaller.org/downloads/)——Ruby 2.2.2(32 位和 64 位)、Ruby 2.1.6(32 位和 64 位)——结果都一样。
编辑:在几个人说我不需要引号之后,我删除了它们,并完全按照@eryksun 所说的进行放置。结果如下:
C:\Users\morifey>echo %PATH%
C:\Users\morifey\nvmw\nodejs\v0.10.36;C:\ProgramData\Oracle\Java\javapath;C:\Win
dows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPow
erShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Int
el\WirelessCommon\;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\In
tel\OpenCL SDK\3.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;C
:\Program Files\nodejs\;C:\wamp\bin\php\php5.5.12;C:\ProgramData\ComposerSetup\b
in;C:\Program Files\TortoiseGit\bin;C:\Program Files (x86)\Git\cmd;C:\Program Fi
les\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Users
\morifey\AppData\Roaming\npm
有些输入重复很奇怪:
C:\Program Files\Intel\WiFi\bin\;
C:\Program Files\Intel\WiFi\bin\;
C:\Program Files\Common Files\Intel\WirelessCommon\;
C:\Program Files\Common Files\Intel\WirelessCommon\;
C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x86;
C:\Program Files (x86)\Intel\OpenCL SDK\3.0\bin\x64;
尽管它们与我粘贴在系统变量路径中的行不同!
更新 - 我使用 PowerShell 和 this 脚本检查系统变量中是否存在重复。我正在上传带有结果的图像。 很奇怪路径正是应该的,但正如你所见,在 CMD 中我看到了不同的东西!
更新 - 今天我尝试从 PowerShell 运行 Ruby - 一切顺利。所以似乎只有 CMD 不知道发生了什么!只是提醒您-重新启动无济于事! :)
【问题讨论】:
-
退出并登录(或重新启动)。
-
重启没有帮助。我每次卸载 Ruby 后都尝试重新启动,然后在安装新的 Ruby 后,然后以任何方式更改 %PATH% 后。每次结果都是一样的。
-
从用户和系统
path环境变量设置中删除所有"双引号(使用 GUI,nosetx)。这些在那里被认为是有害的。 Read more. -
我看到很少有帖子说空格 anywhere 不是一个好习惯。我已经手动添加了引号。我已经从系统变量中手动删除了它们 - 没有任何改变。
-
为什么用户和系统
PATH之间有重复?绝不应该是这样。这两个值在登录时合并。看起来用户PATH应该只包含C:\Users\morifey\nvmw\nodejs\v0.10.36;C:\Users\morifey\AppData\Roaming\npm。
标签: ruby windows cmd registry environment-variables