在没有前缀"Ruby"的情况下启动Ruby

Ale*_*Mcp 10 ruby unix macos terminal

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

有没有理由不这样做?

谢谢!

Noa*_*ahD 26

是的,你可以这样做.

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

#!/usr/bin/env ruby
puts 'Hello world'
Run Code Online (Sandbox Code Playgroud)

在命令行: chmod +x ruby.rb

这使它可执行.

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

./ruby.rb
Run Code Online (Sandbox Code Playgroud)

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

编辑(JörgWMittag):使用#!/usr/bin/env ruby而不是#!/usr/bin/ruby像shebang那样更容易使用,因为在过去20年中生产的每个Unix上都env知道命令存在/usr/bin,而Ruby安装通常都在这里.(例如,我的生活/home/joerg/jruby-1.2.0/bin/ruby.)


Bri*_*ell 7

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

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

#!/usr/bin/env ruby
puts "Hello!"
Run Code Online (Sandbox Code Playgroud)

并使其可执行:

chmod +x file.rb
Run Code Online (Sandbox Code Playgroud)