我在OS X(使用bash)和unix的新手。我想知道是否可以修改一些文件以便运行ruby程序,我不需要“ruby file.rb”,而是可以运行“ruby.rb”。
有没有理由不这样做?
谢谢!
答案 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