说我以root身份运行bash,我想要用户ada
的主目录。另请注意,ada
存储在名为$USER
的变量中(因为我是从脚本执行此操作)。
当我尝试以下操作时,
chown -R $USER:$USER ~$USER
shell首先执行波浪扩展,因此它尝试chown /home/root/ada
,而不是/home/ada
。
有没有办法用嵌套的子句和正确的转义来做到这一点?
答案 0 :(得分:3)
Tilde扩展很棘手,不适用于那样的变量。
一种方法是使用eval
:
chown -R $USER:$USER $(eval echo ~"$USER")
但请确保您的USER
变量不是来自不受信任的来源。
答案 1 :(得分:0)
我在这里受伤是因为我有种问题。
我想到了:
chown -R $USER:$USER $(getent passwd $USER | awk -F: '{print $6}')
但是我更喜欢基于anubhava的eval
的建议。
谢谢!