代码之家  ›  专栏  ›  技术社区  ›  mk12

OS X上的rubygame shebang问题

  •  1
  • mk12  · 技术社区  · 15 年前

    我在玩rubygame。我用mac包安装了它,现在我有了rsdl可执行文件。 rsdl game.rb 工作正常,但是当i chmod+x RB文件时,将shebang添加到rsdl(尝试直接路径和/usr/bin/env rsdl),并尝试执行它。( ./game.rb ,它开始在终端和试图打开的rsdl之间闪烁,最终放弃并给出 bus error . 有人知道是什么引起的吗?我在雪豹(10.6.2)上,如果有什么区别的话。

    谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   ergosys    14 年前

    我认为这是嵌入式Ruby的一个问题。Ruby有一个可怕的黑客来处理shebang执行,本质上它在可执行文件名(即argv[0])中寻找“ruby”。如果嵌入的Ruby可执行文件的名称中没有“ruby”,那么此黑客攻击将失败,并且您将得到一个无限循环(如果您重命名它,那么即使是股票Ruby也会发生这种情况)。假设这里是这种情况,您可以将sym-link或mv-rsdl-to-rsdl-ruby(或类似),将shebang更改为 #!/usr/bin/env rsdl-ruby 它会起作用的。

        2
  •  0
  •   knowtheory    14 年前

    rsdl希望从何处执行(即从可执行文件,而不是从游戏文件)可能存在问题。我发现的方法是打开rsdl可执行文件(假定它只是一个Ruby脚本),然后在里面搜索。我认为了解为什么要从Ruby脚本中独立执行也是很有用的。