使用 shebang 将 运行 SBCL Common LISP 脚本作为可执行文件发布

Issue using shebang to run SBCL Common LISP script as executable

我一直在尝试使用 SBCL 学习 Common Lisp,但我 运行 在执行我的代码时遇到了问题。使用 sbcl --script exec.lisp 一切正常(无论我是否指定了 shebang 行)但我似乎无法直接使用 shebang 行执行与 ./exec.lisp 相同的文件。虽然我很可能误解了 manual 所做的事情,但根据我的理解,这意味着这应该是可能的。我的 exec.lisp 脚本看起来与示例中的相同(并且它已被授予可执行权限 chmod a+x exec.lisp

#!/usr/local/bin/sbcl --script
(write-line "Hello, World!")

但我收到的不是所需的输出:

$ ./exec.lisp 
./exec.lisp: line 2: write-line: command not found

我已经确定 sbcl 的路径是正确的)

编辑:我正在使用 mac OS。

我会检查为 sbcl 提供的路径(是否与 which sbcl 的输出匹配?)

我尝试了以下方法(运行 MacOS Mojave 10.14.4,SBCL 版本 1.4.16,使用 nix 而不是 brew 获得,但我怀疑这会有所不同) :

> $ which sbcl
/Users/abrahma/.nix-profile/bin/sbcl

> $ bat test.lisp
───────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
       │ File: test.lisp
───────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
   1   │ #!/Users/abrahma/.nix-profile/bin/sbcl --script
   2   │ (write-line "Hello world from Lisp !")
   3   │
───────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

> $ l
.rwxr-xr-x 88 abrahma 21 May 15:54 test.lisp

> $ ./test.lisp
Hello world from Lisp !

在 MacOS 上遇到同样的问题,更改为:

#!/usr/bin/env sbcl --script

成功了。

在 Arch Linux 上使用 GNU 核心实用程序:

#!/usr/bin/env -S sbcl --script
(write-line "")