![为什么 Bash 脚本不会扩展 ~/.bashrc?](https://linux22.com/image/1517066/%E4%B8%BA%E4%BB%80%E4%B9%88%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%8D%E4%BC%9A%E6%89%A9%E5%B1%95%20~%2F.bashrc%EF%BC%9F.png)
在我的 bash 脚本中,我尝试使用以下行来扩展我的 bashrc:
to_print="alias $nom_machine='ssh $nom_machine'"
target_file="~/.bashrc"
echo -e "$to_print" >> "$target_file"
执行时,出现错误:
~/.bashrc: No such file or directory
但该文件存在,它有 236 行:
$ cat ~/.bashrc | wc -l
236
我的脚本有什么问题?
我在 Linux Ubuntu 14.05 上
答案1
据该消息来源称(https://askubuntu.com/questions/510216/trouble-using-cd-command-with-or-home-in-bash-scripting),你应该使用:
eval echo -e "$to_print" >> "$target_file"
原因如下
问题是波浪号扩展发生在变量扩展之前
答案2
~(波浪号)在脚本或引号中使用时并不总是按照您期望的方式运行(我不能保证其cat "~/.bashrc"
行为相同),我建议改用${HOME}
(带或不带括号)。