Onde está o $ HOME definido no Centos 6.3

2

Onde está a variável de ambiente $ HOME definida no Centos 6.3?

Eu olhei em:

  • / etc / profile
  • /etc/profile.d / *
  • / etc / bashrc
  • ~ / .bash_profile
  • ~ / .bashrc

Além disso, a segunda à última coluna em / etc / passwd tem o diretório pessoal correto.

O SELinux está desativado, fwiw.

    
por trimbletodd 03.04.2013 / 20:26

1 resposta

3

Os programas de login definem essas variáveis. É claro que você pode anular o HOME se precisar, ou até mesmo desabilitá-lo - mas, a menos que você se esforçasse para modificar a fonte de cada programa, você nunca poderia se livrar dele.

Observe que, mesmo que você altere HOME para outra coisa, a origem autoritativa de seu diretório pessoal sempre estará presente em passwd ou no derivado nsswitch .

Se você fizer login por meio de um TTY real, o login será definido.

Do util-linux em login-utils / login.c

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

Se você fizer login via SSH, o sshd irá defini-lo:

De session.c em sshd

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

Se você fizer login via GDM, ele será configurado lá.

Do gdm no daemon / 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);
    
por 03.04.2013 / 22:26