启动不带前缀“Ruby”的 Ruby

问题描述 投票:0回答:5

我使用的是 OS X(带有 bash),并且是 UNIX 的新手。我想知道是否可以修改某些文件,以便运行 ruby 程序,我不需要“ruby file.rb”,而只需运行“ruby.rb”。

有理由不这样做吗?

谢谢!

ruby macos unix terminal
5个回答
29
投票

是的,你可以做到这一点。

假设

ruby.rb
里面有这样的东西:

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

在命令行:

chmod +x ruby.rb

这使其可执行。

然后你可以这样执行:

./ruby.rb

编辑(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
。)


9
投票

正如其他人提到的,您希望在开头有一个 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

4
投票

chmod +x /路径/到/文件

没有理由不这样做,只要你在解释器前加上 shebang(#!/usr/local/ruby 或 OSX 上的任何路径)。 外壳不在乎。


2
投票

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

#!/usr/bin/ruby

在 shell 中,使文件可执行

chmod +x file

2
投票

如果您想在运行此应用程序时执行任何更复杂的操作,您可以随时创建 shell 脚本:

#! /bin/sh
ruby ruby.rb

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

$ ./run_script

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

© www.soinside.com 2019 - 2024. All rights reserved.