GNU/Linux >> Znalost Linux >  >> Linux

Kdo nastavuje proměnné prostředí $user a $username?

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);

Linux
  1. Rozdíl v použití mezi proměnnými shellu a proměnnými prostředí?

  2. Odkazování na proměnné prostředí *v* /etc/environment?

  3. Proměnné prostředí databáze Oracle a jejich funkce

  1. Jak nastavit a zrušit místní, uživatelské a systémové proměnné prostředí v Linuxu

  2. Proměnné prostředí Linux:Jak číst a nastavovat na Linux VPS

  3. Otázky týkající se putenv() a setenv()

  1. Jak nastavit/vytvořit proměnné prostředí a prostředí v Linuxu

  2. Jak nastavit, vypsat a odebrat proměnné prostředí v Linuxu

  3. Proměnné uživatelského prostředí S „su“ a „sudo“ v Linuxu