登录为user1
,我想投影到另一个 unix 用户环境,比方说user2
,无需输入密码。
通过“项目”,我的意思是:
- 更改当前$HOME
- calluser2
的 bash 启动脚本(以获取它的提示符和全局变量)
我写了一个小脚本switch_user_env.sh
:
HOME="/usr/users/$1"
cd "$HOME"
bash
. /etc/profile
if [ -f "$HOME/.bash_profile" ]; then
. "$HOME/.bash_profile"
fi
if [ -f "$HOME/.profile" ]; then
. "$HOME/.profile"
fi
我这样称呼它:. ./switch_user_env.sh user2
当前 shell 已正确更改为 bash,但未调用启动脚本。
你能帮我理解出了什么问题吗?
谢谢 !
[编辑]
switch_user_env.sh
源代码可在 GitHub 中找到:https://github.com/pierrefevrier/switch-user-env
答案1
因为你的脚本的剩余部分(之后巴什call)将在您退出 bash 后执行(输入 exit 命令或“Ctrl+d”)。在脚本中调用 bash 可以控制进一步的执行。
这是更新版本:
HOME="/usr/users/$1"
cd "$HOME"
SOURCE_PROFILE=/etc/profile
if [ -f "$HOME/.bash_profile" ]; then
SOURCE_PROFILE="$HOME/.bash_profile"
fi
if [ -f "$HOME/.profile" ]; then
SOURCE_PROFILE="$HOME/.profile"
fi
bash --rcfile "$SOURCE_PROFILE"