De acordo com essa fonte ( link ), você deve usar:
eval echo -e "$to_print" >> "$target_file"
A razão é dada como
The problem is the tilde expansion happens before variable expansion
No meu script bash, tento estender meu bashrc com as seguintes linhas:
to_print="alias $nom_machine='ssh $nom_machine'"
target_file="~/.bashrc"
echo -e "$to_print" >> "$target_file"
Quando executado, recebi um erro:
~/.bashrc: No such file or directory
Mas o arquivo existe, são 236 linhas:
$ cat ~/.bashrc | wc -l
236
O que está errado no meu roteiro?
Eu estou no linux ubuntu 14.05
De acordo com essa fonte ( link ), você deve usar:
eval echo -e "$to_print" >> "$target_file"
A razão é dada como
The problem is the tilde expansion happens before variable expansion
O ~ (til) nem sempre se comporta como você esperaria quando usado em um script ou entre aspas (eu não garantiria que cat "~/.bashrc"
se comporta da mesma forma), eu recomendaria ${HOME}
( com ou sem chaves).