Всегда ли установлена ​​переменная среды $ HOME в системе Linux?

13

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

yanhan
источник
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установлен корневой каталог.

John1024
источник
Это не оболочка, которая устанавливает HOME- ни одна из обычных оболочек не делает, кроме zsh. Это программа, которая регистрирует вас (включая такие методы, как cron).
Жиль "ТАК - перестань быть злым"