如何更改SBCL的当前目录?

发布于 2024-12-09 15:27:07 字数 418 浏览 0 评论 0原文

更改CLisp当前工作目录非常容易:

>cat ~/.clisprc.lisp 
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
  (load quicklisp-init)))

(cd "/media/E/www/qachina/db/doc/money")
(load "money")

但是,SBCL中似乎没有cd类似的功能。如何使用 SBCL 来完成此操作?

It is very easy to change CLisp's current working directory:

>cat ~/.clisprc.lisp 
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp" (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
  (load quicklisp-init)))

(cd "/media/E/www/qachina/db/doc/money")
(load "money")

However, it seems there is no cd similar function in SBCL. How can this be done with SBCL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

夜声 2024-12-16 15:27:07
CL-USER> (sb-posix:chdir "/home/apugachev")
0
CL-USER> (sb-posix:getcwd)
"/home/apugachev"
CL-USER> (sb-posix:chdir "/tmp/")
0
CL-USER> (sb-posix:getcwd)
"/tmp"
CL-USER> (sb-posix:chdir "/home/apugachev")
0
CL-USER> (sb-posix:getcwd)
"/home/apugachev"
CL-USER> (sb-posix:chdir "/tmp/")
0
CL-USER> (sb-posix:getcwd)
"/tmp"
倒数 2024-12-16 15:27:07
(setf *default-pathname-defaults* #P"/New/Absolute/Path/")
(setf *default-pathname-defaults* #P"/New/Absolute/Path/")
—━☆沉默づ 2024-12-16 15:27:07

现在,更好的答案是:使用 (uiop:chdir "some/path")

或者您可以使用此功能临时更改目录:


(uiop:调用当前目录“某些/路径”
(拉姆达()
(做该工作))

或者使用这个宏更方便:


(uiop:with-当前目录(“某些/路径”)
(做该工作))

Right now, better answer is: use (uiop:chdir "some/path").

Or you can use this function to change directory temporarily:


(uiop:call-with-current-directory "some/path"
(lambda ()
(do-the-job))

Or this macro for more convenient way:


(uiop:with-current-directory ("some/path")
(do-the-job))

万人眼中万个我 2024-12-16 15:27:07

有同样的问题。结果将

(setf *default-pathname-defaults* (truename "./subdir"))

加载路径更改为子目录。如果你不需要相对路径,那么

(setf *default-pathname-defaults* (truename "/absolute/path"))

Had the same question. Turns out

(setf *default-pathname-defaults* (truename "./subdir"))

changes load path to subdir. If you don't want relative path, then

(setf *default-pathname-defaults* (truename "/absolute/path"))
顾忌 2024-12-16 15:27:07

现在我使用rlwrap来运行SBCL并解决这个问题

$"cat ~/bin/sb"
breakchars="(){}[],^%$#@\"\";:''|\\"

cd /media/E/www/qachina/db/doc/money/
exec rlwrap --remember -c -b "$breakchars"  -f "$HOME"/.sbcl_completions sbcl "$@"

然后运行sb

Now i use rlwrap to run SBCL and solves this problem

$"cat ~/bin/sb"
breakchars="(){}[],^%$#@\"\";:''|\\"

cd /media/E/www/qachina/db/doc/money/
exec rlwrap --remember -c -b "$breakchars"  -f "$HOME"/.sbcl_completions sbcl "$@"

then run sb.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文