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


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.