12

我在 OS X(使用 bash)和 unix 的新手。我想知道是否可以修改某些文件以运行 ruby​​ 程序,我不需要“ruby file.rb”,而是可以只运行“ruby.rb”。

有理由不这样做吗?

谢谢!

4

5 回答 5

28

是的,你可以这样做。

假设ruby.rb里面有这样的东西:

#!/usr/bin/env ruby
puts 'Hello world'

在命令行:chmod +x ruby.rb

这使其可执行。

然后你可以像这样执行它:

./ruby.rb

有关更多详细信息,请参阅wikibooks

编辑(Jörg W Mittag):使用#!/usr/bin/env ruby而不是#!/usr/bin/ruby作为 shebang 行更便携,因为在过去 20 年生产的每一个 Unix 上,该env命令都知道存在于 . /usr/bin,而 Ruby 安装通常到处都是。(例如,我住在/home/joerg/jruby-1.2.0/bin/ruby.)

于 2009-03-31T14:48:51.733 回答
8

正如其他人所提到的,您希望#!在开头有一个 shebang ( ) 行,并将权限更改为可执行。

我建议使用#!/usr/bin/env ruby而不是直接使用 Ruby 的路径,因为它会使您的脚本更易于移植到可能安装了 Ruby 的不同目录的系统中;env将在您的搜索路径中搜索,因此它会找到与您ruby在命令行上运行时执行的 Ruby 相同的 Ruby。当然,如果env在不同的位置,这会出现问题,但是比 Ruby更常见(它可能在env, ,等)/usr/bin/env/usr/bin/ruby/usr/local/bin/ruby/opt/bin/ruby/opt/local/bin/ruby

#!/usr/bin/env ruby
puts "Hello!"

并使其可执行:

chmod +x file.rb
于 2009-03-31T14:54:13.483 回答
4

chmod +x /路径/到/文件

没有理由不这样做,只要在解释器前面加上 shebang(#!/usr/local/ruby 或 OSX 上的任何路径)。壳不在乎。

于 2009-03-31T14:45:52.253 回答
2

将正确的 shebang 作为文件的第一行。前任:

#!/usr/bin/ruby

在shell中,使文件可执行

chmod +x file
于 2009-03-31T14:49:01.560 回答
2

如果你想在运行这个应用程序时做一些更复杂的事情,你总是可以创建一个 shell 脚本:

#! /bin/sh
ruby ruby.rb

如果你把它保存到 run_script,你只需要像前面提到的那样 chmod +x 它,然后执行以下命令:

$ ./run_script

我怀疑这在您的特定情况下会比已经提到的解决方案更有用,但为了完整起见,值得注意。

于 2009-03-31T14:59:33.640 回答