Také budou tyto proměnné vždy odpovídat aktuálně přihlášenému uživatelskému jménu (v mém systému Debian ano)? Mohu předpokládat jejich dostupnost v jiných unixových (podobných) systémech?
Také by mě zajímalo, proč se používá whoami
místo pouhého čtení kterékoli z těchto proměnných.
Přijatá odpověď:
Je to přihlášení .
Manuálová stránka Linux login(1) říká:
Hodnota pro $HOME , $USER , $SHELL , $PATH , $LOGNAME a $MAIL jsou nastaveny podle příslušných polí v zadání hesla.
Manuálová stránka pro přihlášení k FreeBSD(1) říká:
Přihlášení obslužný program zadává informace do prostředí (viz environ(7)) specifikující domovský adresář uživatele (HOME), interpret
příkazů (SHELL), vyhledávací cestu (PATH), typ terminálu (TERM) a uživatelské jméno
(jak LOGNAME, tak USER).
Manuálové stránky NetBSD, OpenBSD a OS X říkají totéž.
Zde je zdrojový kód z přihlášení util-linux:
setenv("HOME", pwd->pw_dir, 0); /* legal to override */
setenv("USER", pwd->pw_name, 1);
setenv("SHELL", pwd->pw_shell, 1);
/* ... */
setenv("LOGNAME", pwd->pw_name, 1);
Zde je zdrojový kód z přihlášení k FreeBSD:
(void)setenv("LOGNAME", username, 1);
(void)setenv("USER", username, 1);
(void)setenv("PATH", rootlogin ? _PATH_STDPATH : _PATH_DEFPATH, 0);