私は、実行中のスクリプト(ソースファイルを含むディレクトリ)のパスを取得する方法が必要ですが、Racket:実行中のファイルのパスを取得する方法は?
(current-directory)
は(この場合は外付けドライブで)のではなく、いくつかの定義済みの場所にあり指すことはありません。
すべての 'find-system-path'を試すためにファイルを作成しましたが、実行中のファイルはありません! Racketのドキュメントは役に立ちません。
#lang web-server/insta
(define (start request)
(local [{define (build-ul items)
`(ul ,@(map itemize items))}
{define (itemize item)
`(li ,(some-system-path->string (find-system-path item)))}]
(response/xexpr
`(html
(head (title "Directories"))
(body (h1 ,"Some Paths")
(p ,(build-ul special-paths)))))))
(define special-paths (list 'home-dir
'pref-dir
'pref-file
'temp-dir
'init-dir
'init-file
;'links-file ; not available for Linux
'addon-dir
'doc-dir
'desk-dir
'sys-dir
'exec-file
'run-file
'collects-dir
'orig-dir))
目的は、ソースファイルを含むディレクトリの下のサブディレクトリを変更するローカルWebサーバーアプリケーション(音楽サーバー)のためです。私はUSBスティックでアプリを運ぶので、ラケットがインストールされたマシンとオペレーティングシステムの間でそれを運ぶように、独自のディレクトリを見つけることができる必要があります。
@SquareCrow:再あなたの提案された編集は必要ありません。最後に言及した 'HERE'定義は' path-only'を使わずに正確に行います。 –
'(パスのみ(path->完全パス(システムパスの検索 'ランファイル)))'はDrRacketで実行されても動作しません。代わりにDrRacketへのパスを返します。 –