Shammer's Philosophy

My private adversaria

Lisp functions to handle directries

Lisp でディレクトリを作成する - Shammerismでは、ディレクトリの作成についてやった。作成するディレクトリをプログラム内で決定する際に使えそうな関数をいくつか見つけたのでメモ。

? (merge-pathnames
    (make-pathname :directory
                   (list :relative
                         "Dir1"
                         "Dir2"
                         "Dir3"))
    (user-homedir-pathname))
#P"/home/XXXXX/Dir1/Dir2/Dir3/"
?

user-homedir-pathname という関数で実行ユーザーのホームディレクトリを取得できる。
なお、文字列として取得したい場合は、

? (ccl::get-user-home-dir (ccl::getuid))
"/home/XXXXX"
? (user-homedir-pathname)
#P"/home/XXXXX/"
?

というようにできる。(user-homedir-pathname) だと、#P と PATH としての情報が返るが(ccl::get-user-home-dir) を使用した場合は文字列になっているので、完全に同じものではないようだ。