我在Windows上使用Cygwin和cygwin'd版本的ruby.
$ ruby -v
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-cygwin]
Run Code Online (Sandbox Code Playgroud)
在成功安装rspec(gem install rspec)之后,我尝试运行基本的init命令(rspec --init)来开始,但是我得到了一个bash命令not found消息.
$ rspec --init
-bash: rspec: command not found
Run Code Online (Sandbox Code Playgroud)
我猜这种情况正在发生,因为我的C:\ cygwin64\bin目录下没有"rspec"文件(因为有"ruby","irb"等文件,cygwin在输入命令时必须查看这些文件).
浏览我的cygwin目录,我可以在"C:\ cygwin64\home\username\.gem\ruby\gems\rspec-core-3.3.2\exe"下看到rspec"exe"文件.我认为这意味着只需将此文件添加到cygwin的路径中,但我无法找到一个很好的例子.理想情况下,该解决方案将处理此gem(rspec)和所有未来的安装,而无需每次都对该路径进行"硬编码".
看看我的"宝石环境",似乎安装的宝石已经在我的"GEM PATHS"之下了.似乎这与Cygwin正在寻找的地方之间存在脱节.
$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.7
- RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-cygwin]
- INSTALLATION DIRECTORY: /home/username/.gem/ruby
- RUBY EXECUTABLE: /usr/bin/ruby.exe
- EXECUTABLE DIRECTORY: /home/username/bin
- SPEC CACHE DIRECTORY: /home/username/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-cygwin
- GEM PATHS:
- /home/username/.gem/ruby
- /usr/share/gems
- /usr/local/share/gems
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/bin
- /usr/bin
...
Run Code Online (Sandbox Code Playgroud)
我在搜索中找到的最接近的东西是另一个StackOverflow问题:
但根据我对解决方案的理解,它将寻找扩展名为.bat的文件.在我的cygwin中运行它的部分来测试它不会产生有用的结果.
有关使cygwin与我在宝石环境中看到的一致的任何提示?
Fge*_*Fge 12
虽然我的回答有点晚,但我认为它可能有助于有同样问题的人.
对我来说问题是,所有ruby可执行文件都存储在~/bin.,这在我的cygwin路径中没有设置.所以我改变了所有ruby gems及其可执行文件的位置~/.gemrc:
gemhome: /usr/local/rubygems
gem: --bindir /usr/bin
Run Code Online (Sandbox Code Playgroud)
重新安装宝石后,一切都很顺利.这将直接安装所有gem可执行文件/usr/bin.对于多用户设置,这肯定有点脏.
如果您需要适当的多用户设置,更好的方法是调整PATH指向~./binisntead.
进一步阅读:
您可以将以下内容添加到您的.bashrc或类似的:
export PATH=$PATH:~/bin
Run Code Online (Sandbox Code Playgroud)
并source ~/.bashrc立即将其添加到路径中.