SLIME から現在のディレクトリを変更する必要があるのはなぜですか? 現在書いているシステムからLispソースファイルにアクセスしたいからではなく、データを含むファイルを読み書きするコードを書きたいからだと思います。
もしそうなら、おそらくQuicklisplocal-projects
で試したほうがいいでしょう。と一緒に使用すると、システムを簡単に作成できます。システムは、またはを使用してロードできます。quickproject
(ql:quickload 'my-system)
(require 'my-system)
システムのルートから相対的に配置されたデータ ファイルを参照する必要がある場合my-system
(例の一貫性を保つために最後の段落の名前を使用するだけです) asdf:system-relative-pathname
、. たとえば、(asdf:system-relative-pathname 'my-system "files/data.txt")
.
確かに、展開はまったく別のビジネスです。私の解決策は、実行中の実行可能ファイルがどのように呼び出されたかを調べて、コードがデプロイされているか開発中であるかを判断することです。開発中の場合は、 を使用しますasdf:system-relative-pathname
。展開された場合、実行可能ファイルのパスに基づいてファイルのパスを決定します (私の「ビルド スクリプト」は、プロジェクトのビルド時に実行可能ファイルの横にこれらのファイルをコピーします)。
このアプローチを使い始めてからcd
、SBCL での -ing の必要性はゼロになりました。cd
周りを回るのは難しくありませんでしたが、心配することが少なくなったのは良いことです.