Судя по тому, как сообщение об ошибке искажено, я почти уверен, что созданный вами файл .bash_profile имеет окончания строки в стиле DOS / Windows, состоящие из символа возврата каретки, за которым следует символ перевода строки. Инструменты Unix ожидают окончания строки в стиле Unix, состоящие только из новой строки; если они видят окончания в стиле DOS / Windows, они будут рассматривать возврат каретки как часть содержимого строки. В этом случае bash будет обрабатывать возврат каретки как часть определения псевдонима и, следовательно, часть имени файла для имени файла источнику. Попробуйте запустить alias sbp | cat -vt
, чтобы напечатать псевдоним с невидимыми символами, показанными ; я предполагаю, что он напечатает alias sbp='source ~/.bash_profile^M'
(где ^M
- это способ представления возврата каретки cat -vt
).
Решение: преобразуйте файл в формат Unix и либо переключитесь на текстовый редактор, который умеет сохранять в формате Unix, либо измените настройки в текущем редакторе, чтобы сделать это. Для конвертации существует ряд полустандартных инструментов, таких как dos2unix
и fromdos
. Если у вас их нет, этот ответ имеет несколько других вариантов.
Кстати, причина, по которой сообщение об ошибке искажено, состоит в том, что CR печатается как часть сообщения об ошибке, и терминал воспринимает это как инструкцию возврата к началу строки; затем он печатает остальную часть сообщения поверх начала сообщения. Это немного похоже на это:
-bash: /home/dir/path/.bash_profile
: No such file or directory
... но со второй строкой, напечатанной поверх первой, так получается:
: No such file or directory_profile