$HOME 环境变量不会自动设置

$HOME 环境变量不会自动设置

我有一个使用以下方式创建的用户

adduser --system --shell /bin/bash --home /home/myuser myuser

/etc/passwd 中的相应行如下:

myuser:x:106:65534::/home/myuser:/bin/bash

当我通过运行以该用户身份登录时sudo -u myuser bash,出现错误

bash: /root/.bashrc: Permission denied

确实,echo $HOME给了我/root/。因此,每次我以该用户身份登录时,都必须export HOME=/home/myuser手动运行,否则许多程序将无法正常运行。我已将此行添加到此用户的 .profile、.bash_profile 和 .bashrc(以防万一),但无济于事。

任何帮助都值得感激。谢谢!

答案1

不是以该用户身份登录。sudo只会更改您的安全凭证(UID、GID……),最多会调用几个 PAM 会话模块,但这仍然不是真正的“登录”(实际上都不是,su甚至不是su -l)。

特别是,sudo为了方便起见,经常配置为保留原始主目录,因为许多人使用sudo -sroot 权限但想保留他们的常规 ~/.vimrc 等。

sudo -H强制设置 $HOME 的选项,以及sudo -i以“登录”模式运行 shell 的选项(让其读取 .bash_profile),但无论如何,这些都不是完全登录。要以该用户身份正确登录,请尝试ssh myuser@localhost,或者直接从常规登录提示符执行。

相关内容