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

时间:2009-03-31 14:43:18

标签: ruby macos unix terminal

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

有没有理由不这样做?

谢谢!

5 个答案:

答案 0 :(得分:26)

是的,你可以这样做。

假设ruby.rb中有类似的内容:

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

在命令行:chmod +x ruby.rb

这使它可执行。

然后你就可以这样执行:

./ruby.rb

有关详细信息,请参阅wikibooks

EDIT(JörgWMittag):使用#!/usr/bin/env ruby代替#!/usr/bin/ruby因为shebang行更容易移植,因为在过去20年中生成的每个Unix上,env命令都是已知住在/usr/bin,而Ruby安装通常都在这里。 (例如,我的生活在/home/joerg/jruby-1.2.0/bin/ruby。)

答案 1 :(得分: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!" 等)

chmod +x file.rb

让它可执行:

{{1}}

答案 2 :(得分:4)

chmod + x / path / to / file

没有理由不这样做,只要你在解释器前面添加一个shebang(#!/ usr / local / ruby​​或OSX上的路径)。 shell不关心。

答案 3 :(得分:3)

如果您想要执行更复杂的运行此应用程序,您始终可以创建一个shell脚本:

#! /bin/sh
ruby ruby.rb

如果将其保存到run_script,则只需按前面所述chmod + x,然后执行以下命令:

$ ./run_script

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

答案 4 :(得分:2)

将正确的shebang作为文件的第一行。例如:

#!/usr/bin/ruby
在shell中

,使文件可执行

chmod +x file