스크립트에서 현재 쉘의 ~/.profile을 가져올 수 있습니까? [복사]

스크립트에서 현재 쉘의 ~/.profile을 가져올 수 있습니까? [복사]

다음 ~/test.sh스크립트를 예로 들어 보겠습니다.

#!/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

그런 다음 다음과 같이 실행합니다.

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

Hello StackExchange터미널에서 인쇄하려고 했는데 빈 줄이 인쇄되었습니다.

무슨 일이 일어나고 있는지 올바르게 이해하면 source ~/.profile명령이 현재 쉘에 적용되지 않습니다. 그렇다면 .profile로그아웃했다가 다시 로그인하지 않고도 스크립트에서 파일(예: 현재 실행 중인 셸)에 대한 변경 사항을 어떻게 얻을 수 있습니까? 가능합니까?

추신: test.sh항상 그것과 함께 실행 sudo되고 그것 없이는 실행되지 않는다고 가정하십시오. 위의 스크립트는 단지 예일 뿐이지 sudo -u ${SUDO_USER} commandroot.

관련 정보