Ivan Shmakov wrote:
>         I do remember filing a bug or two against packages that refer to
>         the getent () data to find the user's “home” directory instead
>         of using the HOME environment variable.
> 
>         The environment is the preferred place to check for this kind of
>         things: it's (usually) under the full control of the user, and
>         it's quite possible to run several instances of a single program
>         using different environments (with different executable file
>         search PATH's, locales, time zones, etc.), which occasionally
>         turns to be an immense aid to debugging.  (Want to use the
>         all-defaults configuration for a program?  Just start it like:
>         $ HOME="$(mktemp -dt -- foo.XXXXXXXX)" foo)
> 
>         Now, Glib has g_get_home_dir (), whose description reads [1]:
> 
> --cut--
>     Gets the current user's home directory as defined in the password
>     database.
> 
>     Note that in contrast to traditional UNIX tools, this function
>     prefers passwd entries over the HOME environment variable.
> --cut--
> 
>         I believe that this behavior is buggy.

Agreed entirely.  In particular, it breaks the very common use case of
running a program with sudo.  "sudo foo" leaves $HOME set to the user's
home directory rather than root, so that foo will use the same
configuration either way.  A user can then use sudo -H or sudo -i if
they want a more rootish environment.  Other programs that don't respect
$HOME include ssh, which forces ugly workarounds like this:
sudo ssh -o UserKnownHostsFile=$HOME/.ssh/known_hosts ...

- Josh Triplett


--
To UNSUBSCRIBE, email to debian-devel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/20120927213859.GA7282@jtriplet-mobl1

Reply via email to