找不到ZSH Ruby命令

时间:2014-05-31 20:49:09

标签: ruby bash zsh

除了最基本的命令之外,我对终端类型的东西很缺乏经验,我最近用oh-my-zsh从Bash切换到ZSH。我试图在usr / bin / test.rb上创建一个可执行的ruby脚本。对于它的价值,我从未尝试过使用bash,所以我不知道它的zsh是否具体。

$~  test.rb
/usr/bin/test.rb: line 2: puts: command not found

$~  ruby test.rb
ruby: No such file or directory -- test.rb (LoadError)

和我的.zshrc文件:

export ZSH=$HOME/.oh-my-zsh
source $ZSH/oh-my-zsh.sh
export PATH="/Users/jason/.rvm/gems/ruby-2.0.0-p247/bin:/Users/jason/.rvm/gems/ruby-       2.0.0-p247@global/bin:/Users/jason/.rvm/rubies/ruby-2.0.0-p247/bin:/Users/jason/.rvm/bin:.git/safe/../../bin:.git/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11/bin:/Users/jason/.rvm/bin"

~  which ruby
/Users/jason/.rvm/rubies/ruby-2.0.0-p247/bin/ruby

test.rb

#!/usr/bin/env ruby
 puts 'test!'

1 个答案:

答案 0 :(得分:1)

$~  test.rb
/usr/bin/test.rb: line 2: puts: command not found

这可能是因为你的剧本缺少必要的一句话,通常称为" pound-bang line"或者更简单地说是一个" bang line",它告诉操作系统用什么程序来执行文件的其余部分。通常,对于Ruby脚本,它看起来像:

#!/usr/bin/ruby

#!/usr/bin/env ruby

必须是文件中的第一行。当操作系统打开文件时,它会查找#!,如果看到这些,则在给定的路径上启动可执行文件,并将脚本传递给它。这是* nix系统上的基本脚本执行,适用于* nix系统上的sh / Bash / Perl / Python / Ruby和任意数量的其他可执行应用程序。

ruby test.rb
ruby: No such file or directory -- test.rb (LoadError)

我怀疑第二次失败是因为当您执行该命令时,您不在/usr/bin/目录中。 Ruby试图运行脚本,但无法在本地/当前目录中找到它。

我不是想要残忍,但是,作为一名程序员,你会在命令行上花费大量的时间,特别是如果你是编程的话在C / C ++,Perl,Ruby,Python或任何非基于IDE的语言中。您必须了解操作系统的工作原理,否则不同大小和形状的灾难等待着您,因此,在学习语言的同时,您需要学习如何使用和管理您的操作系统。您不必是高级用户或管理员,但您必须了解足够的知识,以了解那些不适用或只是完全错误的指示。