Я пытаюсь написать bash-скрипт, который будет вести себя как базовый интерпретатор, но, похоже, он не работает: пользовательский интерпретатор, похоже, не вызывается. Что я делаю не так?
Вот простая настройка, иллюстрирующая проблему:
/bin/interpreter
: [принадлежит root; Исполняемый]
#!/bin/bash
echo "I am an interpreter running " $1
/Users/zeph/script
принадлежит мне и является исполняемым:
#!/bin/interpreter
Here are some commands for the custom interpreter.
Из того, что я понимаю о механизме hashbangs, скрипт должен быть выполнен следующим образом:
$ ./script
I am an interpreter running ./script
Но это не работает. Вместо этого происходит следующее:
$ ./script
./script: line 3: Here: command not found
... Похоже, что /bin/bash
пытается интерпретировать содержимое ./script
. Что я делаю не так?
Примечание. Несмотря на то, что /bin/interpreter
никогда не вызывалось, я делаю получаю сообщение об ошибке, если его не существует:
$ ./script
-bash: ./script: /bin/interpreter: bad interpreter: No such file or directory
(Второе примечание: если это что-то меняет, я делаю это на MacOS X).