假设我以 root 身份运行 bash,并且想要更改用户 ada
的主目录。还可以说 ada
存储在名为 $USER
的变量中(因为我是通过脚本执行此操作)。
当我尝试以下操作时,
chown -R $USER:$USER ~$USER
shell 首先执行波形符扩展,因此它尝试 chown /home/root/ada
,而不是 /home/ada
。
有没有办法通过嵌套替换和正确的转义来做到这一点?
最佳答案
波浪号扩展很棘手,并且不适用于这样的变量。
一种方法是使用eval
:
chown -R $USER:$USER $(eval echo ~"$USER")
但请确保您的 USER
变量不是来自不受信任的来源。
关于bash - 在 bash 中将波形符扩展与变量替换相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28730465/