如何在Mac OS X上的shell中实现脚本解释器?

时间:2014-07-28 14:00:24

标签: macos shell shebang

我正试图在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上运行?或者有更好的方法来实现这一目标吗?

2 个答案:

答案 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文件夹中。要打开终端,请双击终端图标,然后会看到如图所示的窗口。