Например: при установке pyenv
необходимо добавить
export PATH="/home/user/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
в файл .bashrc
.
Тем не менее, обычный echo '..' >> ~/.bashrc
будет оценивать утверждения перед добавлением. Как правильно добавить такие операторы в файл с помощью командной строки без оценки?
Я бы предложил здесь документ
$ cat >> .bashrc <<'EOF'
export PATH="/home/user/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
EOF
Пока слово EOF
(которое может быть чем угодно) заключено в кавычки, расширение тела не происходит .
Вы можете добавить \
перед специальными символами.
Например:
echo export PATH=\"/home/user/.pyenv/bin:\$PATH\"
дает следующий результат:
export PATH="/home/user/.pyenv/bin:$PATH"
, поэтому кавычки и $PATH
все еще там.
Однако, обычный
blockquote>echo '..' >> ~/.bashrc
оценит операторы перед добавлением. Как правильно добавить такие операторы в файл с помощью командной строки без оценки?Нет, не будет. Все, что находится в одинарных кавычках, совершенно не оценено . Вы можете использовать
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
, не беспокоясь о том, что что-либо будет интерпретировано. Единственный символ любого значения в строке с одинарными кавычками - это одиночная кавычка (которая завершает строку и не может быть экранирована).