【问题标题】:Rubygame on OS X shebang problemOS X shebang问题上的Rubygame
【发布时间】:2010-12-31 17:24:39
【问题描述】:
我正在玩 Rubygame。我用 Mac Pack 安装了它,现在我有了 rsdl 可执行文件。 rsdl game.rb 工作正常,但是当我 chmod +x rb 文件时,将 shebang 添加到 rsdl(尝试直接路径和 /usr/bin/env rsdl)并尝试执行它(./game.rb),它开始在试图打开的终端和 rsdl 最终放弃并给出了bus error。有谁知道是什么原因造成的?如果它有所作为,我会使用 Snow Leopard (10.6.2)。
谢谢。
【问题讨论】:
标签:
ruby
macos
shebang
rubygame
【解决方案1】:
我认为这是嵌入式 ruby 的问题。 Ruby 有一个可怕的 hack 来处理 shebang 执行,它本质上是在可执行文件名(即 argv[0])中寻找“ruby”。如果您的嵌入式 ruby 可执行文件的名称中没有“ruby”,则此 hack 将失败,并且您将获得一个无限循环(如果您重命名它,即使使用股票 ruby 也会发生这种情况)。假设这里是这种情况,您可以将符号链接或 mv rsdl 链接到 rsdl-ruby(或类似的),将您的 shebang 更改为 #!/usr/bin/env rsdl-ruby 并且它将起作用。
【解决方案2】:
rsdl 期望您从哪里执行(即从可执行文件,而不是游戏文件)可能存在问题。我会发现的方法是打开 rsdl 可执行文件(假设它只是一个 ruby 脚本),然后在里面四处寻找。我认为了解您为什么尝试从 ruby 脚本独立执行也会很有用。