Я пытаюсь написать bash script, который будет вести себя как базовый интерпретатор, но он не работает: пользовательский интерпретатор, похоже, не вызывается. Что я делаю неправильно?
Вот простая установка, иллюстрирующая проблему:
/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 должен быть выполнен следующим образом:
$ ./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).