$ HOME在Centos 6.3中设置

Centos 6.3中设置的$ HOME环境variables是什么?

我看过

  • / etc / profile文件
  • /etc/profile.d/*
  • 在/ etc / bashrc中
  • 在〜/ .bash_profile
  • 在〜/ .bashrc

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

SELinux被禁用,fwiw。

login程序设置这些variables。 如果你必须的话,你当然可以重写HOME,但是除非你努力修改每个程序的源代码,否则你永远无法摆脱它。

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

如果您通过真实的TTYlogin,login会设置它。

从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); 

如果你通过SSHloginsshd会设置它:

从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); 

如果您通过GDMlogin,它会将其设置在那里。

从守护进程中的gdm / gdm-session-worker.c

 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);