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


16

我正在寻找$ HOME环境变量设置的地方。我认为是登录后。

我正在使用Linux debian 2.6.32-5-686。

Answers:


2

如果您要修改自己的HOME,则可以

export HOME=/home/... 

在您的外壳程序中,或在〜/ .profile文件和/或〜/ .bashrc中(或相应的登录外壳程序中)。

(上面的代码适用于bash和类似的shell,这在Debian中是默认的;否则,您可以在其他发行版中的`csh-like shell'上执行setenv HOME $ HOME:/ extra / path。)

编辑 -但是,这可能不是这样做的方法。查看其他答案。不要使用此答案。


您可能会$HOME与混淆$PATH。包含多个路径$HOME(整个值将被视为单个路径名),或者在大多数情况下根本没有修改是没有意义的$HOME
grawity 2012年

@grawity:抱歉,谢谢。可惜我无法删除答案。
user76871 2012年

21

在Linux上,HOME环境变量由登录程序设置:

  • 通过login控制台,telnetrlogin会话
  • 通过sshdSSH连接
  • 通过gdmkdmxdm用于图形会话。

8

登录程序会根据/ etc / passwd中的值在您的shell上调用exec之前(通过将其包含在exec的参数中)对其进行安排。


1
有趣的是,这没有获得更多的选票。这是实际指定环境变量设置位置的唯一答案,这是OP的实际问题。
Mike Williamson

5

通过运行进行编辑usermod -d /home/whatever_dir whatever_user

请注意,这(显然)将是新的主目录。Bash会cd在登录时使用它,因此请确保它存在并且权限正确。另外,不要忘了.bashrc.profile.xinitrc等; 如果它们不在主目录中,则不会读取它们。

来自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
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.