Почему нет такого файла или directory_profile?

Я использую Windows и MobaXterm.

Я создал файл.bash_profile в ~ каталог и следующая строка

alias sbp="source ~/.bash_profile"

это единственный код в этом файле.

Однако, когда я пытался сделать sbp, я получил ошибку.

введите описание изображения здесь

Это работает на моем Mac и раньше работало на моем старом компьютере с Windows (но у него есть некоторые повреждения водой, поэтому он сломался). Почему это не работает сейчас?

Заранее спасибо!

1 ответ

Решение

Судя по тому, как это сообщение об ошибке искажено, я почти уверен, что созданный вами файл.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
Другие вопросы по тегам