[erlang-questions] "erlexec: HOME must be set" error - a build question
Raymond Xiong
Raymond.Xiong@REDACTED
Fri Jun 6 08:01:29 CEST 2008
(I guess Richard forgot to copy to the mailig list, so I reply to all)
On 06/06/08, Richard A. O'Keefe wrote:
> It's always possible to write a little C program that
> (1) Calls getuid() to find who is running it.
> (2) Calls getpwuid() to find the /etc/passwd record for that user.
> (3) Calls puts() to write the pw_dir field of that record.
>
> #include <unistd.h>
> #include <pwd.h>
> #include <stdio.h>
>
> int main(void) {
> struct passwd *pw = getpwuid(getuid());
> puts(pw == 0 ? "/tmp" : pw->pw_dir);
> return 0;
> }
>
> Your build.ksh script can then do HOME=`homedir` and you are done.
>
> Almost. There is one flaw in this, which means that HOME cannot
> in general be precisely reconstructed. UNIX allows more than one
> logname to map to the same uid, and these lognames might have
> different home directories. (I've known this done.) In that
> case you will recover >A< home directory that might not be >THE<
> $HOME you started with.
Thanks for your suggestion, but I am afraid that seems a bit complex
for a build script(though I didn't realize it can be solved in that way).
I am still curious how HOME directory is used by Erlang.
> My understanding is that "env -" should be "env -i" these days.
Didn't notice this before. Thanks for the tip.
Raymond
> The C code above raises the question, if the Erlang build
> needs this, why doesn't it do that itself?
>
>
More information about the erlang-questions
mailing list