为什么 Bash 脚本不会扩展 ~/.bashrc?

为什么 Bash 脚本不会扩展 ~/.bashrc?

在我的 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}(带或不带括号)。

相关内容