为什么没有这个文件或directory_profile?

Why is there no such file or directory_profile?

我正在使用 Windows 和 MobaXterm。

我在 ~ 目录和以下行中创建了一个 .bash_profile 文件

alias sbp="source ~/.bash_profile"

是该文件中唯一的代码。

但是,当我尝试执行 sbp 时,出现错误。

这适用于我的 Mac 并且它曾经适用于我的旧 Windows 计算机(但那台计算机有一些水损坏,所以它坏了)。为什么这现在不起作用?

提前致谢!

从错误消息的乱码来看,我很确定您创建的 .bash_profile 文件具有 DOS/Windows-style 行结尾,由一个回车 return 字符后跟一个换行符。 Unix 工具期望 unix 风格的行结尾只包含一个换行符;如果他们看到 DOS/Windows-style 结尾,他们会将回车 return 视为该行内容的一部分。在这种情况下,bash 会将回车 return 视为别名定义的一部分,因此也是文件名到文件名到源的一部分。尝试 运行 alias sbp | cat -vt 打印显示不可见字符的别名 ;我猜它会打印 alias sbp='source ~/.bash_profile^M'(其中 ^Mcat -vt 表示马车 return 的方式)。

解决方案:将文件转换为unix格式,然后切换到知道如何以unix格式保存的文本编辑器,或者更改当前编辑器中的设置来执行此操作。对于转换,有许多半标准工具,如 dos2unixfromdos。如果您没有这些,this answer 还有一些其他选择。

顺便说一句,错误消息出现乱码的原因是 CR 作为错误消息的一部分被打印出来,终端将其视为返回行首的指令;然后它将消息的其余部分打印在消息开头之上。有点像这样:

-bash: /home/dir/path/.bash_profile
: No such file or directory

...但是第二行打印在第一行之上,所以结果为:

: No such file or directory_profile