処理系を起動したディレクトリのパスネームを返す - lisp-cookbook-ja/common-lisp GitHub Wiki

入出力 パスネーム

処理系を起動したディレクトリのパスネームを返す

少なくともSBCL,CLISP,CMUCLではtruename関数で取得できます.

(truename "./")  ;=>#P"処理系を起動したディレクトリ"

各処理系でのカレントディレクトリの取得と設定は,以下のように行えます. SBCLなら

(sb-posix:getcwd) ;=>#P"カレントディレクトリ"
(sb-posix:chdir #P"設定したいディレクトリ")

CLISPなら

(ext:default-directory) ;=>#P"カレントディレクトリ"
(ext:cd #P"設定したいディレクトリ")

CMUCLなら

(extensions:default-directory) ;=>#P"カレントディレクトリ"
(setf (extensions:default-directory) #P"設定したいディレクトリ")

カレントディレクトリの設定後に(truename "./")が返す値が変化しているかは処理系により異なるようです. また,処理系によってはdefault-pathname-defaultsに起動時のディレクトリが入っています.

ASDF に含まれる UIOP ライブラリを活用するとポータブルな処理が記述できます。

(uiop:getcwd) ; =>#P"カレントディレクトリ"
(uiop:chdir "/opt")