Centos 6.3 中的 $HOME 在哪里设置

Centos 6.3 中的 $HOME 在哪里设置

Centos 6.3 中 $HOME 环境变量设置在哪里?

我查看过:

  • /etc/配置文件
  • /etc/profile.d/*
  • 在 /etc/bashrc 中
  • 的〜/ .bash_profile
  • ~/.bashrc

此外,/etc/passwd 中的倒数第二列有正确的主目录。

SELinux 已被禁用,仅供参考。

答案1

登录程序设置了这些变量。当然,如果有必要,您可以覆盖 HOME,甚至取消设置它 —— 但除非您努力修改每个程序的源代码,否则您永远无法摆脱它。

请注意,即使您将 HOME 更改为其他内容,您的主目录的权威来源将始终存在于passwdnsswitch衍生版本中。

如果您通过真实的 TTY 登录,登录将会设置它。

来自 login-utils/login.c 中的 util-linux

setenv("HOME", pwd->pw_dir, 0); /* legal to override */
setenv("USER", pwd->pw_name, 1);
setenv("SHELL", pwd->pw_shell, 1);
setenv("TERM", termenv, 1);

如果您通过 SSH 登录,sshd 将设置它:

来自 sshd 中的 session.c

child_set_env(&env, &envsize, "USER", pw->pw_name);
child_set_env(&env, &envsize, "LOGNAME", pw->pw_name);
child_set_env(&env, &envsize, "HOME", pw->pw_dir);

如果您通过 GDM 登录,它将在那里设置它。

来自 daemon/gdm-session-worker.c 中的 gdm

gdm_session_worker_set_environment_variable (worker, "LOGNAME", worker->priv->username);
gdm_session_worker_set_environment_variable (worker, "USER", worker->priv->username);
gdm_session_worker_set_environment_variable (worker, "USERNAME", worker->priv->username);
gdm_session_worker_set_environment_variable (worker, "HOME", home);
gdm_session_worker_set_environment_variable (worker, "SHELL", shell);

相关内容