スクリプトから現在のシェルの〜/ .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、ログアウトして再度ログインしなくても、スクリプト内のファイル(現在実行中のシェル)に対する変更をどのように取得できますか?可能ですか?

PS:test.sh常にそれと一緒に実行されsudo、それなしでは実行されないとします。上記のスクリプトは単なる例ですsudo -u ${SUDO_USER} commandroot

ベストアンサー1

おすすめ記事