我一直在尝试使用SBCL学习常见的LISP,并且遇到了执行代码的问题。使用sbcl --script exec.lisp
一切正常(无论我是否指定了Shebang行),但是我似乎无法直接使用Shebang线直接执行相同的文件,直接像./exec.lisp
一样。虽然我很可能会误解了手册从我的理解中做的事情,这意味着这应该是可能的。我的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
的路径是正确的)
编辑:我正在使用MacOS。
在macOS上也有相同的问题,更改为:
#!/usr/bin/env sbcl --script
工作。
在此处使用Arch Linux上使用GNU核心实用程序:
#!/usr/bin/env -S sbcl --script
(write-line "😻")
我会检查为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 !