更改unix用户环境

更改unix用户环境

登录为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"

相关内容