我正在尝试编写一个bash脚本,它将作为一个基本的解释器,但它似乎不起作用:自定义解释器似乎没有被调用.我究竟做错了什么?
这是一个简单的设置来说明问题:
/bin/interpreter
:[由root拥有; 可执行]
#!/bin/bash
echo "I am an interpreter running " $1
Run Code Online (Sandbox Code Playgroud)
/Users/zeph/script
由我拥有,并且可执行:
#!/bin/interpreter
Here are some commands for the custom interpreter.
Run Code Online (Sandbox Code Playgroud)
根据我对hashbangs的机制的理解,脚本应该可执行如下:
$ ./script
I am an interpreter running ./script
Run Code Online (Sandbox Code Playgroud)
但这不起作用.而是发生以下情况:
$ ./script
./script: line 3: Here: command not found
Run Code Online (Sandbox Code Playgroud)
......似乎/bin/bash
正试图解释其中的内容./script
.我究竟做错了什么?
注意:虽然看起来/bin/interpreter
从未调用过,但如果它不存在,我会收到错误:
$ ./script
-bash: ./script: /bin/interpreter: bad interpreter: No such file or directory
Run Code Online (Sandbox Code Playgroud)
(第二个注意:如果它有任何区别,我在MacOS X上这样做).