$ HOME环境变量是否总是在Linux系统上设置?


13

假设计算机运行的是Linux内核,会话使用Bash Shell,并且所有操作都使用默认配置(没有用户对配置文件进行任何更改),我们是否可以假设$HOME始终设置环境变量?


nobody没有家!(这是nobody,用户)
devnull

1
@devnull没有主目录(即,指定的主目录不存在),并不意味着$ HOME环境。无法设置变量。如果已设置,则它既不必指向现有目录,也不必指向/etc/passwd
Anthon 2014年

Answers:


17

是。该POSIX规范 要求的OS为$ HOME设置的值:

HOME
系统在登录时应将此变量初始化为用户主目录的路径名。参见pwd.h。

用户nobody呢?

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

即使nobody没有真正的主HOME目录,也会设置为根目录。


不是由shell设置的HOME-除了zsh以外,没有其他通用shell。它是使您登录的程序(包括cron之类的方法)。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.