За последние несколько дней я объединил домашний каталог из рабочей установки 12.04 со старым домашним каталогом, я полагаю, из установки 10.04 (это был голый драйвер)
Я получил новый диск для загрузки и смонтировать правильно, но когда я пытаюсь использовать записи .bashrc из установки 12.04, возникают такие вещи, как следующий псевдоним:
alias banana='echo banana'
Он вызывает следующие ошибки:
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
: invalid shell option name
-bash: $'\r': command not found
-bash: $'\r': command not found
: invalid shell option name
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: .bashrc: line 36: syntax error near unexpected token `$'in\r''
'bash: .bashrc: line 36: `case "$TERM" in
Я не могу найти текст, на который есть ссылка в этом .bashrc (он работает только тогда, когда я копирую его из / etc / skel, и даже тогда, после добавления псевдонима и источника, а затем удаления псевдонима и источника, он по-прежнему вызывает ошибки. Единственный способ снова заставить Bash работать - это повторно скопируйте файл из / etc / skel
Похоже, я не могу внести какие-либо изменения в .bashrc, не вызывая этих ошибок. Я подозреваю, что это как-то связано с readline или .inputrc, у которых также были проблемы (хотя, похоже, сейчас они решены.) На данный момент в каталоге / home / user нет .inputrc.
Спасибо за любую помощь, которую вы можете оказать!
Попробуйте:
sed -i -e 's/\r$//' ~/.bashrc
Это удалит окончания строк в стиле Windows (символы CR - \r
). Теперь, если вы source ~/.bashrc
, вы не должны получать никаких ошибок.
Затем, прежде чем копировать любой контент из другого файла, выполните ту же команду для этого файла:
sed -i -e 's/\r$//' /path/to/file_from_where_you_copy
Файл кажется довольно грязным. Вы можете просто удалить файл и скопировать новый из /etc/skel
:
rm ~/.bashrc
cp /etc/skel/.bashrc ~/.bashrc
Затем отредактируйте файл и убедитесь, что он сохранен с использованием конца строки UNIX.
Ошибка:
$'\r'
: команда, не найденная
средства, что Ваш файл (.bashrc
) так или иначе состойте, окончания строки Windows (CRLF) и удар не распознают их, таким образом, он перестал работать. Возможно, Вы отредактировали тот файл в Windows?
Таким образом, необходимо преобразовать затронутый файл назад для использования окончаний строки стиля Unix от CRLF в LF.
Это может быть достигнуто: dos2unix
команда, например.
dos2unix ~/.bashrc
Если у Вас нет его, установите через apt-get install tofrodos
.
Иначе, если Вам установили Vim, попробуйте:
ex +'%!tr -d "\r"' -scwq ~/.bashrc
для нескольких файлов:
ex +'bufdo!%!tr -d \r' -scxa ~/.bash*
Примечание: :bufdo
командой не является POSIX.
Если Вы используете Vagrantfile случайно, и это происходит как часть сценария настройки, можно установить binary
кому: true
для Вашей оболочки, например.
# Shell provisioner, see: https://www.vagrantup.com/docs/provisioning/shell.html
config.vm.provision "shell" do |s|
s.binary = true # Replace Windows line endings with Unix line endings.
s.path = "script.sh"
end