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。
在*load-truename*与*compile-file-truename*变量绑定到文件的truename被加载cl:load或编译cl:compile-file分别装载或编译的时间。
在你的情况下,*load-truename*是要使用的东西。它将为脚本提供完整的绝对路径名。