获取当前在 Steel Bank Common Lisp 中执行的脚本的路径

Vje*_*art 3 lisp sbcl common-lisp

我正在从系统的各个地方调用 CL 脚本。如何获取当前执行的脚本的文件路径?

例如,脚本源文件位于/home/user/project/source/目录中。该脚本正在/home/user/以下列方式从目录执行:

user@machine:~$ ./project/source/script.lsp

不管调用者的位置如何,脚本都应该知道它位于/home/user/project/source/目录中。

我已经尝试使用该*default-pathname-defaults*变量,但以下命令显示了调用脚本的目录:

(format t "Pathname: ~S~&" *default-pathname-defaults*)

环境:Ubuntu 18.04 上的 SBCL 1.4.5.debian。

Xac*_*ach 6

*load-truename**compile-file-truename*变量绑定到文件的truename被加载cl:load或编译cl:compile-file分别装载或编译的时间。

在你的情况下,*load-truename*是要使用的东西。它将为脚本提供完整的绝对路径名。