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
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"))
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"
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))
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
.
(setf *default-pathname-defaults* #P"/New/Absolute/Path/")