輸入:
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
預設情況下,Shell 變數不會匯出到從 shell 啟動的命令。
您需要明確地使用 來執行此操作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'
''
引號是文字,""
引號允許變數擴展。我已經使用了兩者,將它們連接在一起。如果我只使用它也會起作用""
。