入力する:
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
その文字列に構文エラーがある場合はこれを見ることができます。
また見なさい:
答え2
引用の問題
sudo bash -c '>> /media/'"$USER"'/rootfs/etc/profile'
test=$USER
sudo bash -c '>> /media/'"$test"'/rootfs/etc/profile'
''
引用符はリテラル""
であり、引用符を使用すると変数を拡張できます。私は両方とも接続して使ってみました。ただ使用しても動作します""
。