Почему нет такого файла или 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