bash: /home/rathin/.profile:: Нет такого файла или каталога при попытке перезагрузить его через "source ~/.profile" после редактирования через "vi ~/.profile"

После того, как я отредактировал мой ~/.profile с помощью vi команда, не может выйти из него успешно.

Поэтому я закрыл терминал, и когда я попробовал его снова после повторного открытия терминала, он показал дубликат файла с именем ~/.profile.swp, Поэтому я удалил это.

Теперь это показывает

bash: /home/rathin/.profile:: No such file or directory

когда я пытаюсь

source ~/.profile

Это также показывает ошибку

Error loading /home/user/.profile no such file or directory found.

когда я перезагружаю свой ноутбук.

Это вывод vi ~/.profile

~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

"~/.profile" 25 lines, 677 characters

Любая помощь будет высоко ценится.

2 ответа

Решение

Избавьтесь от первой строки в этом файле. Это читает

~/.profile: ...

и bash пытается выполнить этот файл, имя которого заканчивается на :, Этот файл не существует, поэтому Bash жалуется, обратите внимание на двойной: в сообщении об ошибке.

TL;DR Первая строка должна быть комментарием

# ~/.profile: executed by the command interpreter for login shells.

Поэтому беги

perl -i.bak -0777 -pe 's/^/# /' ~/.profile

Команда добавляет # в начале первой строки и создает файл резервной копии: ~/.profile.bak


объяснение

  • -0777 изменяет разделитель строк на undef, что позволяет нам загружать файл, передавая все строки в Perl за один раз.

  • -p обрабатывает файл построчно и печатает вывод.

  • -e это то, что позволяет нам указать код Perl, который мы хотим запустить прямо в командной строке.

Другие вопросы по тегам