我需要一种获取正在运行脚本的路径(包含源文件的目录)的方法,但是
(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存储设备上携带该应用程序,因此它需要能够定位自己的目录,以便我在安装有Racket操作系统的计算机之间移动。
(path-only (path->complete-path (find-system-path 'run-file)))
无法正常工作。它会返回DrRacket的路径而不是所需的路径。 - Sorawee Porncharoenwase