sudo権限で実行する必要があるスクリプトを作成しています。ただし、一部の環境変数がオーバーロードされている他のユーザーからコマンドを実行し、それをコマンドに使用する必要が.bash_rc
あります。
例えば。PATH
ユーザーのための変数を印刷する必要があります。
sudo -s -u ${USER_NAME} source ~/.bash_rc; echo $PATH
ただし、PATH
スクリプトを実行しているユーザーには印刷されます。また、他のオプション(rcfileを使用または渡す)もたくさん試しましたが、su
何も機能しないようです。
この問題にどのように対処する必要がありますか?
ベストアンサー1
sudo
スクリプトをインポートするコマンドがあります。印刷コマンドもあります$PATH
。二人とは違いはありません。
たぶん、次の意味があります。
sudo -u "${USER_NAME}" bash -c 'source ~/.bash_rc; echo $PATH'
複合コマンドでは使用できませんが、-s
複数のコマンドを含むスクリプトで使用できます。
cat >/opt/bin/show_me_the_path <<'X'
#!/bin/bash
source ~/.bash_rc
echo $PATH
X
chmod a+x /opt/bin/show_me_the_path
sudo -u "${USER_NAME}" -s /opt/bin/show_me_the_path
しかし、それでもスクリプトは独自のシェル()を使用する必要があるため、あまり意味がありません/bin/bash
。全体的にこの-s
ロゴを再考するのが最善です。