我在 OS X(使用 bash)和 unix 的新手。我想知道是否可以修改某些文件以运行 ruby 程序,我不需要“ruby file.rb”,而是可以只运行“ruby.rb”。
有理由不这样做吗?
谢谢!
是的,你可以这样做。
假设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
.)
正如其他人所提到的,您希望#!
在开头有一个 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
chmod +x /路径/到/文件
没有理由不这样做,只要在解释器前面加上 shebang(#!/usr/local/ruby 或 OSX 上的任何路径)。壳不在乎。
将正确的 shebang 作为文件的第一行。前任:
#!/usr/bin/ruby
在shell中,使文件可执行
chmod +x file
如果你想在运行这个应用程序时做一些更复杂的事情,你总是可以创建一个 shell 脚本:
#! /bin/sh
ruby ruby.rb
如果你把它保存到 run_script,你只需要像前面提到的那样 chmod +x 它,然后执行以下命令:
$ ./run_script
我怀疑这在您的特定情况下会比已经提到的解决方案更有用,但为了完整起见,值得注意。