我正试图在shell中实现一个脚本解释器,我可以在shebang行中使用它。例如,这是我的解释器和使用该解释器的测试脚本:
-----
$ cat interp
#! /usr/bin/env bash
printf "interp called with args: %s\n" "$*"
-----
$ cat test
#! ./interp
printf "test script!\n"
当我在Linux系统上运行./test
时,使用我期望的参数调用interp
:
$ ./test -a
interp called with args: ./test -a
但是当我在Mac OS X 10.8.4上做同样的事情时,我得到以下结果:
$ ./test -a
test script!
test
脚本的内容由bash执行,而不是以interp
文件作为第一个参数执行的test
脚本。
我是否正确地执行此操作并且这样的事情根本无法在Mac OS X上运行?或者有更好的方法来实现这一目标吗?
答案 0 :(得分:2)
是的,有一种方法可以让它在OSX上运行,这与您在第一个脚本中所做的相同,即使用/usr/bin/env
。
将./test
作为:
#!/usr/bin/env ./interp
printf "test script!\n"
答案 1 :(得分:-1)
OS X构建于UNIX之上。应用程序终端将您从OS X的外部世界带到UNIX的内部世界。终端位于Applications文件夹内的Utilities文件夹中。要打开终端,请双击终端图标,然后会看到如图所示的窗口。