在 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*。
假设我有一个名为“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*。