スクリプトでsuを実行したときに.bash_rcソースを取得する

スクリプトでsuを実行したときに.bash_rcソースを取得する

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ロゴを再考するのが最善です。

おすすめ記事