【发布时间】:2010-10-16 14:58:09
【问题描述】:
我在 OS X(使用 bash)和 unix 的新手。我想知道是否可以修改一些文件以便运行 ruby 程序,我不需要“ruby file.rb”,而是可以只运行“ruby.rb”。
有理由不这样做吗?
谢谢!
【问题讨论】:
我在 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 命令存在于 @987654329 @,而 Ruby 安装通常到处都是。 (例如,我住在/home/joerg/jruby-1.2.0/bin/ruby。)
【讨论】:
正如其他人所提到的,您希望在开头有一个 shebang (#!) 行,并将权限更改为可执行。
我建议使用#!/usr/bin/env ruby 而不是直接指向 Ruby 的路径,因为它会使您的脚本更易于移植到可能在不同目录中安装了 Ruby 的系统; env 将在您的搜索路径中进行搜索,因此如果您在命令行上运行 ruby,它将找到您将执行的相同 Ruby。当然,如果env 位于不同的位置,这会出现问题,但env 位于/usr/bin/env 比Ruby 位于/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 /path/to/file
没有理由不这样做,只要在解释器前面加上 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
我怀疑这在您的特定情况下是否会比已经提到的解决方案更有用,但为了完整起见,值得注意。
【讨论】: