Ruby -s返回没有这样的文件或目录(开关)

时间:2016-01-14 22:05:53

标签: ruby command-line

我在我的文件顶部有这个:

#!/usr/bin/env ruby -s

它在没有-s的情况下正常运行并且运行正常但是我想要简单的开关,所以我希望-s能够正常工作。当我用-s运行时,我得到:

/usr/bin/env: ruby -s: No such file or directory

这是语法错误吗?

1 个答案:

答案 0 :(得分:2)

您只能将单个选项传递给 shebang 行中命名的命令。或者说真的,如果你传递多个参数,它们就不会爆炸而是作为单个参数传递。在这种情况下像:

/usr/bin/env 'ruby -s'

但文件'ruby -s'不存在。这就是错误信息的原因。

按照Ruby的手册页,你应该使用以下的shebang:

#! /usr/bin/ruby -s
# :prints "true" if invoked with `-xyz' switch.
print "true\n" if $xyz

您需要直接调用ruby而不是使用/usr/bin/env。这是一个缺点,但这样做,您可以像这样调用脚本:

./script.rb -xyz