web-dev-qa-db-fra.com

Où est définie la variable d'environnement $ HOME?

Je cherche l'endroit où la variable d'environnement $ HOME est définie. C'est après la connexion, à mon avis.

J'utilise Linux Debian 2.6.32-5-686.

14
webnoon

Si vous essayez de modifier votre HOME, vous pouvez faire

export HOME=/home/... 

soit dans votre shell, soit dans votre fichier ~/.profile et/ou ~/.bashrc (ou dans le shell de connexion approprié).

(Le code ci-dessus fonctionnera pour les shells bash et similaires, qui sont par défaut dans Debian; sinon, vous feriez `setenv HOME $ HOME:/extra/path, je pense, sur les shells de type csh dans d'autres distributions.)

edit - Cependant, ce n'est probablement pas la façon de le faire. Voir d'autres réponses. Ne pas utiliser cette réponse.

2
user76871

Sous Linux, la variable d’environnement HOMEest définie par le programme de connexion:

  • par loginsur la console, telnet et rlogin sessions
  • par sshdpour les connexions SSH
  • par gdmname__, kdmou xdmpour les sessions graphiques.
18
grawity

Le programme de connexion l'arrange avant d'appeler exec sur votre shell (en l'incluant dans les arguments de exec), en fonction de la valeur dans/etc/passwd.

6
bmargulies

Modifiez cela en exécutant: usermod -d /home/whatever_dir whatever_user.

Veuillez noter que ce sera (évidemment) le nouveau répertoire de base. Bash lui donnera cd lors de la connexion, assurez-vous qu'il existe et que les autorisations sont correctes. De plus, n'oubliez pas .bashrc, .profile, .xinitrc, etc; s'ils ne sont pas dans le répertoire personnel, ils ne seront pas lus.

De usermod:

Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT         new value of the GECOS field
  -d, --home HOME_DIR           new home directory for the user account
  -e, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -f, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -g, --gid GROUP               force use GROUP as new primary group
  -G, --groups GROUPS           new list of supplementary GROUPS
  -a, --append                  append the user to the supplemental GROUPS
                                mentioned by the -G option without removing
                                him/her from other groups
  -h, --help                    display this help message and exit
  -l, --login NEW_LOGIN         new value of the login name
  -L, --lock                    lock the user account
  -m, --move-home               move contents of the home directory to the
                                new location (use only with -d)
  -o, --non-unique              allow using duplicate (non-unique) UID
  -p, --password PASSWORD       use encrypted password for the new password
  -R, --root CHROOT_DIR         directory to chroot into
  -s, --Shell SHELL             new login Shell for the user account
  -u, --uid UID                 new UID for the user account
  -U, --unlock                  unlock the user account
4
Synthead