Common lisp 如何设置SBCL';使用slime的当前目录是什么?

Common lisp 如何设置SBCL';使用slime的当前目录是什么?,common-lisp,sbcl,Common Lisp,Sbcl,过去,我使用以下脚本启动SBCL: breakchars="(){}[],^%$#@\"\";:''|\\" cd /media/E/work exec rlwrap --remember -c -b "$breakchars" -f "$HOME"/.sbcl_completions sbcl --noinform --userinit "$HOME"/.sbclrc "$@" 现在在emacs中使用slime时,我不知道如何设置SBCL的当前目录 任何建议都将不胜感激 SLIME使用

过去,我使用以下脚本启动SBCL:

breakchars="(){}[],^%$#@\"\";:''|\\"
cd /media/E/work

exec rlwrap --remember -c -b "$breakchars"  -f "$HOME"/.sbcl_completions  sbcl --noinform --userinit "$HOME"/.sbclrc "$@"
现在在emacs中使用slime时,我不知道如何设置SBCL的当前目录


任何建议都将不胜感激

SLIME使用当前目录启动Lisp系统,该目录取自与当前缓冲区关联的文件所在的目录。通常,您会打开一个文件,希望SLIME首先从其中开始


如果您想通过运行Lisp更改当前目录,那么最好的方法是使用。这假设您有一个正确的slime repl设置,因为默认情况下当前的slime安装非常少。请看,您可能至少需要。

为什么需要从SLIME更改当前目录?我假设这不是因为您希望访问当前正在编写的系统中的Lisp源文件,而是因为您希望编写代码来读取或写入包含数据的文件

如果是这样的话,也许最好试一下。与之一起,它允许您轻松创建系统,然后可以使用
(ql:quickload'my system)
甚至
(require'my system)
加载这些系统

如果您需要参考一个相对于system
my system
根目录的数据文件(仅使用上一段中的名称以保持示例的一致性),您可以使用。例如,
(asdf:system-relative-pathname'my-system“files/data.txt”)

当然,部署是一项完全不同的业务。我的解决方案是查看以确定代码是已部署还是正在开发中。如果在开发中,我使用
asdf:system-relative-pathname
。如果部署,我将根据可执行文件的路径确定文件的路径(我的“构建脚本”在构建项目时将这些文件复制到可执行文件旁边)


自从我开始使用这种方法以来,我对SBCL中的
cd
-ing的需求降到了零
cd
-四处走动并不困难,但有更少的事情需要担心是件好事。

slime cd是'slime.el'中的一个交互式编译Lisp函数。(slime cd目录)使目录成为Lisp的当前目录。返回swank:设置默认目录返回的内容。这很有帮助。但是,指向“cd快捷方式”的链接已失效。你有什么想法?