#! 不会让 Linux 运行解释器

#! 不会让 Linux 运行解释器

脚本如下:

#!/usr/bin/env ruby

CODES = {}
puts "ok"

root用户下一切都很好:

# ./test.rb
ok

munin当的默认解释器为 时/bin/false,什么也不会发生:

# su munin -c ./test.rb

当默认解释器为 时/bin/sh,它始终被使用:

# su munin -c ./test.rb
./test.rb: line 3: CODES: command not found

为什么在munin用户 Linux 下忽略脚本中的解释器行,而在root它下却正常工作?

更新。最后它就开始工作了,不需要我刻意修复。

答案1

#!由 shell 解释,如果您未指定所需的 shell,则-s SHELL它是默认 shell -/bin/false在您的情况下。并且false不理解#!语法(事实上 - 根本不读您的脚本)。-s /bin/sh与 su 一起使用,它将按您想要的方式工作。

相关内容