我使用的是 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
编辑(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
。)
正如其他人提到的,您希望在开头有一个 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 /路径/到/文件
没有理由不这样做,只要你在解释器前加上 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
我怀疑这在您的特定情况下比已经提到的解决方案更有用,但为了完整性起见,值得注意。