Alterar ambiente do usuário unix

0

Conectado como user1 , gostaria de projetar para outro env de usuário unix, digamos user2 , sem digitar sua senha.

Por "projeto", quero dizer:
- alterar atual $HOME
- chame os scripts de inicialização bash do user2 (para obter seu prompt e globais vars)

O que escrevi um pequeno script 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

Eu chamo assim: . ./switch_user_env.sh user2

O shell atual é alterado corretamente para o bash, mas os scripts de inicialização não são chamados.

Você pode me ajudar a entender o que está errado?

Obrigado!

[EDIT]
switch_user_env.sh código-fonte está disponível no GitHub: link

    
por pierrefevrier 29.01.2016 / 12:07

1 resposta

0

Porque a parte restante do seu script (após a chamada bash ) será executada depois que você sair do bash (digite exit command ou "Ctrl + d"). Chamar bash em seu script toma o controle de uma execução adicional.

Aqui está a versão atualizada:

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"
    
por 29.01.2016 / 12:55

Tags