仅在一个 shell 中无法识别特定命令

仅在一个 shell 中无法识别特定命令

我在开发机器上运行的是 Windows7 操作系统。它有各种 Shell:

  • cmd
  • 电源外壳
  • Mysysgit GNU Bash <-- 这个不起作用
  • PuppetLabs 外壳
  • Nodejs Shell
  • PHPStorm 内置终端

但在Mysysgit/GNU Bash命令puppet没有工作

有趣的是:当我进入

$ where puppet

# Response:
C:\Program Files (x86)\Puppet Labs\Puppet\bin\puppet.bat

在每个 bash(包括 Mysysgit)中我都得到了正确的路径。(只有 Powershell 似乎没有真正弄清楚如何使用where)。在 PuppetLabs shell 中我甚至得到了第二条路径

$ where puppet

# Response
C:\Program Files (x86)\Puppet Labs\Puppet\puppet\bin\puppet
C:\Program Files (x86)\Puppet Labs\Puppet\bin\puppet.bat

我的系统环境变量设置得很完美:echo $PATH显示两个包含的路径都存在。但仍然type puppet不起作用。

之后我将其附加C:\Program Files (x86)\Puppet Labs\Puppet\bin\puppet.bat 到我的$PATH变量,突然puppet命令被识别......并且失败了。

c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- puppet/util/command_line (LoadError)
    from c:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:55:in `require'
    from c:/Program Files (x86)/Puppet Labs/Puppet/puppet/bin/puppet:3:in `<main>'

puppet 版本是3.5.1(最新)

我的系统上安装了 Ruby 1.9.3 和 Ruby 2.0.x。会不会是 Ruby 安装有冲突?它没有出现在任何其他 Shell/Bash/Terminal/Console 中。

相关内容