当我们启动一个erl时,通过ps可以看到对应进程会自动带上一堆参数,其中一个是"-home"
那么-home是在什么时候加上的,后面的路径又是怎么指定的?
其实erl本身只是一个shell脚本,最终调用了erlexec
而在erlexec.c的代码中可以看到, -home参数是在这里被添加的,并且目录的指定是通过环境变量HOME来设置的。
static char * home;
static char ** Eargsp = NULL;
static int EargsCnt = 0;
static char **argsp = NULL;
static void get_home( void )
{
home = get_env("HOME");
if (home == NULL)
error("HOME must be set");
}
static void add_arg(char * new_arg)
{
if( argsCnt >= argsSz )
argsp = (char **) erealloc((void *) argsp, sizeof(char*) * (argsSz+=20));
argsp[argsCnt++] = QUOTE(new_arg);
}
static