Por que o script Bash não estenderá ~ / .bashrc?

2

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

    
por Romain Jouin 29.12.2016 / 20:25

2 respostas

1

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

    
por 29.12.2016 / 20:58
0

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).

    
por 30.12.2016 / 00:25

Tags