我正在尝试在准系统 OpenSolaris 衍生版本(OmniOS,Illumos/OpenIndiana 的发行版)中设置一个健全/可用的环境。我在 .profile、.inputrc 和 .bashrc 文件中准备好了所需的所有管道代码,可以在系统范围内使用,但没有为非登录 shell 提供系统范围的脚本。Bash 尝试在 su 上加载用户的 .bashrc 文件,但 $HOME(以及任何其他环境变量)仍保留为先前用户配置。
直接 (SSH) 登录的输出:
login as: myuser
Using keyboard-interactive authentication.
Password:
/etc/profile run
myuser's .bashrc run
myuser's .profile run
myuser@Helios:~$ echo ~
/home/myuser
myuser@Helios:~$
Run Code Online (Sandbox Code Playgroud)
输出切换用户:
root@Helios:/etc# su myuser
bash: /root/.bashrc: Permission denied
bash-4.2$ id
uid=1001(myuser) gid=100(users) groups=100(users),27(sudo)
bash-4.2$ echo ~
/root
bash-4.2$
Run Code Online (Sandbox Code Playgroud)
请特别注意尝试获取 root 的 .bashrc 而不是 myuser 的 .bashrc。
su(没有额外的参数)在 Ubuntu、Fedora 等中始终无缝工作,我打算复制这种体验,但是当没有系统范围的脚本运行且无法找到用户的脚本时我该怎么办?我倾向于责怪 OmniOS 版本的 bash 和/或 su 遗漏了某些内容,但正确的行为到底是什么?我可以在某处配置/访问/编写额外的管道来解决更新 $HOME 和其他环境变量的失败问题吗?
进一步说明: