Ruby 1.9如果我有一个shebang指向ruby,为什么系统不能看到它?
我正在使用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
我得到相同的命令没有找到错误。 怎么了?
您需要先使脚本可执行:
chmod +x todo.rb
然后你需要像这样运行它:
./todo.rb
你不能只通过说todo.rb
来运行它,除非你把它放在你的PATH
,在这种情况下你可以从任何地方这样做。
你在env
命令结束时错过了ruby
。 你的意思是:
#!/usr/bin/env ruby
你需要告诉env
你正在寻找什么可执行文件。
(问题更新)
你是在执行这样的代码吗? todo.rb
? 您需要提供脚本的完整路径( /home/you/project/todo.rb
)或相对路径( ./todo.rb
),除非该目录位于$PATH
。