0

我正在使用 Windows 和 MobaXterm。

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

alias sbp="source ~/.bash_profile"

是该文件中唯一的代码。

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

在此处输入图像描述

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

提前致谢!

4

1 回答 1

4

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

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

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

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

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

: No such file or directory_profile
于 2018-09-14T06:09:01.223 回答