4

我正在使用 Ubuntu。我正在尝试运行一个 ruby​​ 文件 todo.rb 我将此 shebang 添加为文件的第一行

#!/usr/bin/env ruby

我转到 rb 文件所在的目录,然后运行 ​​todo.rb 并得到错误todo.rb: command not found

于是我直接去了 /usr/bin 目录。我找到了 env 命令并运行了它。该env命令的输出显示 ruby​​ 路径和 ruby​​ 数据:

MY_RUBY_HOME=/home/tallercreativo/.rvm/rubies/ruby-1.9.2-p290
PATH=/home/tallercreativo/.rvm/gems/ruby-1.9.2-p290/bin:/home/tallercreativo/.rvm/gems/ruby-1.9.2-p290@global/bin:/home/tallercreativo/.rvm/rubies/ruby-1.9.2-p290/bin:/home/tallercreativo/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
GEM_PATH=/home/tallercreativo/.rvm/gems/ruby-1.9.2-p290:/home/tallercreativo/.rvm/gems/ruby-1.9.2-p290@global
RUBY_VERSION=ruby-1.9.2-p290

因此,由于无法使其正常工作,因此我将 shebang 更改为直接指向 ruby​​:

#!/home/tallercreativo/.rvm/rubies/ruby-1.9.2-p290/bin/ruby

我得到相同的命令未找到错误。怎么了?

4

2 回答 2

11

您需要首先使您的脚本可执行:

chmod +x todo.rb

那么你需要像这样运行它:

./todo.rb

你不能只说 来运行它todo.rb,除非你把它放在你的PATH中,在这种情况下你可以从任何地方这样做。

于 2012-04-20T16:46:40.007 回答
6

你在你的命令ruby结束时错过了。env你的意思:

#!/usr/bin/env ruby

您需要告诉env您要查找的可执行文件。

(问题更新)

你是这样执行代码的吗? todo.rb? 您需要提供脚本的完整路径 ( /home/you/project/todo.rb) 或相对路径 ( ./todo.rb),除非该目录位于您的$PATH.

于 2012-04-20T16:25:13.110 回答