sudoを介して取得したスクリプトに表示されるように変数をエクスポートする

sudoを介して取得したスクリプトに表示されるように変数をエクスポートする

このスクリプトではsudo。その後、別のスクリプトをインポートしますが、スクリプトはスクリプトをインポートすると通常のユーザーに返されます。

commands.shsudocommands.sh

文書:main.sh

#!/bin/bash

user=ubuntu
export $user

sudo -u $user bash -c "source includes-shared/commands.sh"

文書:includes-shared/commands.sh

# debug command to see if $user is available
printenv
[ more commands...]

変数は$userこのcommands.shスクリプトに表示されなくなりました。つまり、printenv他のコマンドには表示されません。ソーススクリプトで使用できるように
エクスポートするにはどうすればよいですか?$user

答え1

変数名に対してエクスポートを実行する必要があります。これで、エクスポートで表示される前に変数が参照され置き換えられます。

次のように変更してください。

export user

不足を参照してください$

現在のバージョンは基本的に次のようになります。

export ubuntu

$userまず説明するからです。

sudo を使用すると、環境変数も失われます。保存する方法は2つあります。全体の環境を維持するか

sudo -E -u $user command

または必要な変数だけを維持してください。

sudo user=$user -u $user command

関連情報