Escript:设置相对于脚本目录的代码路径

Pee*_*ger 7 erlang erlang-escript

当我尝试使用像这样的-pz在escript中设置相对代码路径时

#!/usr/bin/env escript
%% -*- erlang -*-
%%! -pz ../dir-of-some-beams
Run Code Online (Sandbox Code Playgroud)

该路径是相对于我运行escript的目录解释的,这使得它无法用于设置相对于脚本位置的路径.

我当前的"解决方法"是使用一个令人烦恼的绝对路径,因为所有这些都是存储库的一部分,我不希望它依赖于位置.

那么如何设置相对于escript所在目录的代码路径呢?

Pee*_*ger 18

刚发现自己:

在主要的开头添加代码如下:

true = code:add_pathz(filename:dirname(escript:script_name()) 
                       ++ "/../dir-of-some-beams"),
Run Code Online (Sandbox Code Playgroud)

我建议总是测试true这些code函数,因为它很容易键入code:add_pathsz,它想要一个字符串列表并且总是返回ok,即使你只传递一个字符串 - 但它没有设置单个目录的代码路径(这是很烦人的行为btw).