Назад | Перейти на главную страницу

#! не заставит 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 работает как обычно?

Обновить. Наконец, он просто начал работать без какого-либо намеренного исправления с моей стороны.

#! интерпретируется оболочкой, и если вы не укажете, какая оболочка вам нужна, -s SHELL тогда это оболочка по умолчанию - /bin/false в твоем случае. И false не понял #! синтаксис (по сути - не читаю вам сценарий вообще). Использовать -s /bin/sh с su, и он будет работать так, как вы хотите.