我想在文件系统中的某个地方有一个可执行的 guile 脚本
prog
。
我想用
guild compile -o prog.go prog
对它进行字节编译,这样它就不再需要编译,从而快速启动。
我不知道在哪里放置
prog.go
文件,以便程序不会自动编译到$HOME/.cache/guile/...
(我不想淹没每个用户的HOME缓存并让其冗余编译)。因为无论我把 prog.go
放在哪里并通过 GUILE_LOAD_COMPILED_PATH
指向它,guile 都希望将程序自动编译到我的 HOME 缓存中(这正是我想要避免的,也是我问的原因)。
示例:
PATH=$PWD GUILE_LOAD_COMPILED_PATH=$PWD prog
# => auto-compiles :(
虽然这些案例有效(好的,但为什么?):
PATH=. GUILE_LOAD_COMPILED_PATH=. prog
# works
PATH=. GUILE_LOAD_COMPILED_PATH=$PWD prog
# works
GUILE_LOAD_COMPILED_PATH=$PWD $PWD/prog
# works
问题似乎是在需要使用 PATH 搜索 prog 时出现的?听起来像是一个错误?
PATH=$PWD GUILE_LOAD_COMPILED_PATH=$PWD prog
这个会自动编译,因为你的 shell 在运行脚本时使用
prog
的绝对路径(通常,通过连接 $PATH
目录和命令名称创建的路径),并且 guile 在 %load-compiled-path
中查找该路径 列表。因此,如果您当前的工作目录是 /home/bob/bin
,它将查找不存在的 /home/bob/bin/home/bob/bin/prog.go
。当PATH
和GUILE_LOAD_COMPILED_PATH
只是.
时,它会寻找确实存在的/home/bob/bin/prog.go
。
(%site-ccache-dir)
返回的目录开始的路径中,这样您就不必费力设置环境变量来指向自定义位置。