Чи завжди в системі Linux встановлюється змінна середовища $ HOME?


13

Якщо припустити, що машина працює з ядром Linux, сесії використовують оболонку Bash, і все використовує конфігурації за замовчуванням (жоден користувач не вносив жодних змін у конфігураційні файли), чи можна вважати, що $HOMEзмінна середовища завжди встановлена?


nobodyне має будинку! (Це nobody, користувач.)
devnull

1
@devnull не має будинку (тобто, вказано домашній каталог, який не існує), не означає $ HOME env. змінна не може бути встановлена. Якщо воно встановлено, воно просто не повинно вказувати на існуючий каталог, ані на домашній запис у/etc/passwd
Anthon

Відповіді:


17

Так. Специфікація POSIX вимагає, щоб ОС встановила значення для $ HOME:

HOME
Система повинна ініціалізувати цю змінну в момент входу в систему, щоб бути іменем домашнього каталогу користувача. Див. Pwd.h.

Що з користувачем nobody?

# su - nobody
No directory, logging in with HOME=/
$ echo $HOME
/

Незважаючи на те, що nobodyне має справжнього будинку, HOMEвін встановлюється в кореневу директорію.


Це не оболонка, яка встановлює HOME- жодна із загальних оболонок не робить, крім zsh. Це програма, яка входить до вас (включаючи такі методи, як cron).
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.