2

В моем скрипте 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

2 ответа2

1

Согласно этому источнику (https://askubuntu.com/questions/510216/trouble-using-cd-command-with-or-home-in-bash-scripting), вы должны использовать:

eval echo -e "$to_print" >> "$target_file"

Причина дана как

Проблема в том, что расширение тильды происходит до расширения переменной

0

~ (Тильда) не всегда ведет себя так, как вы ожидаете, когда он используется в скрипте или в кавычках (я не гарантирую, что cat "~/.bashrc" ведет себя одинаково), я бы рекомендовал использовать ${HOME} (с или без скобок) вместо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .