シェルに設定された変数は、「bash -c 'command'」から読み込まれません。

シェルに設定された変数は、「bash -c 'command'」から読み込まれません。

入力する:

sudo bash -c '>> /media/$USER/rootfs/etc/profile'

出力:

bash: /media/root/rootfs/etc/profile: No such file or directory

入力する:

TEST=$USER
sudo bash -c '>> /media/$TEST/rootfs/etc/profile'

出力:

bash: /media//rootfs/etc/profile: No such file or directory

変える:

/media/riccardo/rootfs/etc/profile

この問題をどのように解決できますか?

ベストアンサー1

デフォルトでは、シェル変数はシェルで実行されたコマンドとしてエクスポートされません。

以下を使用して明示的にこれを行う必要がありますexport

$ export test=foo
$ bash -c 'echo test=$test'
test=foo

sudoに渡す前に環境をクリーンアップすることはまだ可能であるため、コマンドbashライン引数を使用する必要があるかもしれません。

$ test=foobar 
$ sudo bash -c 'echo "$1"' sudo_bash "$test"
foobar

ここでは必要ありませんexport。これはsudo_bash内部シェルの「名前」として使用される文字列にすぎず、-cその文字列に構文エラーがある場合はこれを見ることができます。

また見なさい:

おすすめ記事