在 sbcl 中检索脚本名称

retrieving the script name in sbcl

假设我有一个名为“1.sb”的文件,其内容为:

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

(prin1 sb-ext:*posix-argv*) (terpri)

如果我调用它作为'1.sb a b c'我得到这个输出:

("/usr/local/bin/sbcl" "a" "b" "c")

如何获取脚本文件本身的名称 ('1.sb')?

事实证明,对于 sbcl,一个正确的(至少据我所知)轻量级解决方案如下脚本所示:

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

(prin1 (apply #'concatenate 'string
         (remove-if #'null
           (list (pathname-name *load-truename*)
                 (when (pathname-type *load-truename*)
                   ".")
                 (pathname-type *load-truename*))))) (terpri)

感谢 the Freebsd forums 的用户 tobik 将我指向 *load-truename*。