É possível obter o ~ / .profile no shell atual a partir de um script? [duplicado]

1

Use o seguinte script ~/test.sh como exemplo:

#!/bin/bash

sudo -u ${SUDO_USER} cp ~/.profile ~/.profile.bak

cat <<EOF >>/home/${SUDO_USER}/.profile
export HELLO="Hello StackExchange"
EOF

sudo -u ${SUDO_USER} source ~/.profile

sudo -u ${SUDO_USER} cp ~/.profile.bak ~/.profile
sudo -u ${SUDO_USER} rm ~/.profile.bak

Eu então executo assim:

User@MACHINE:~$ sudo bash test.sh
User@MACHINE:~$ echo $HELLO

Eu esperava que Hello StackExchange fosse impresso no terminal, mas uma linha em branco foi impressa.

Se eu entendi o que está acontecendo corretamente, o comando source ~/.profile não está sendo aplicado ao meu shell atual. Então, como posso criar alterações feitas em arquivos como .profile no shell em execução a partir de um script sem ter que sair e fazer login novamente? Isso é possível?

P.S: Suponha que test.sh seja sempre executado com sudo e nunca sem ele. O script acima é apenas um exemplo, mas eu uso sudo -u ${SUDO_USER} command quando eu preciso de certos comandos para executar como o usuário que invocou o script e não como root .

    
por Ricardo Amaral 15.04.2018 / 13:13

0 respostas