【问题标题】:Launching Ruby without the prefix "Ruby"在没有前缀“Ruby”的情况下启动 Ruby
【发布时间】:2010-10-16 14:58:09
【问题描述】:

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

有理由不这样做吗?

谢谢!

【问题讨论】:

    标签: ruby macos unix terminal


    【解决方案1】:

    是的,你可以这样做。

    假设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。)

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • +1 确保您的 shebang 行将使用您路径中的任何 Ruby。升级时,它有时会将新版本置于与当前安装完全不同的位置。
      • 是的,这就是我发布这个的原因;这个问题已经有好几个人回答了,但我觉得 /usr/bin/env 出于这个原因很重要。
      【解决方案3】:

      chmod +x /path/to/file

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

      【讨论】:

        【解决方案4】:

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

        #!/usr/bin/ruby
        

        在shell中,使文件可执行

        chmod +x file
        

        【讨论】:

          【解决方案5】:

          如果你想在运行这个应用程序时做一些更复杂的事情,你总是可以创建一个 shell 脚本:

          #! /bin/sh
          ruby ruby.rb
          

          如果你把它保存到run_script,你只需要像前面提到的那样chmod +x它,然后执行以下命令:

          $ ./run_script
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-01-14
            • 2020-05-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-01-04
            • 1970-01-01
            相关资源
            最近更新 更多