我正在使用 Windows 和 MobaXterm。
~
我在目录和以下行中创建了一个 .bash_profile 文件
alias sbp="source ~/.bash_profile"
是该文件中唯一的代码。
但是,当我尝试执行 sbp 时,出现错误。
这适用于我的 Mac,它曾经适用于我的旧 Windows 电脑(但那台电脑有一些水损坏,所以它坏了)。为什么这现在不起作用?
提前致谢!
我正在使用 Windows 和 MobaXterm。
~
我在目录和以下行中创建了一个 .bash_profile 文件
alias sbp="source ~/.bash_profile"
是该文件中唯一的代码。
但是,当我尝试执行 sbp 时,出现错误。
这适用于我的 Mac,它曾经适用于我的旧 Windows 电脑(但那台电脑有一些水损坏,所以它坏了)。为什么这现在不起作用?
提前致谢!
从错误消息的乱码方式来看,我很确定您创建的 .bash_profile 文件具有 DOS/Windows 样式的行尾,由回车符和换行符组成。Unix 工具期望 Unix 风格的行尾只包含一个换行符;如果他们看到 DOS/Windows 风格的结尾,他们会将回车视为行内容的一部分。在这种情况下,bash 会将回车视为别名定义的一部分,因此将文件名的一部分视为文件名的一部分。尝试运行alias sbp | cat -vt
以打印显示不可见字符的别名;我的猜测是它会打印alias sbp='source ~/.bash_profile^M'
(其中^M
iscat -vt
表示回车的方式)。
解决方案:将文件转换为 unix 格式,然后切换到知道如何以 unix 格式保存的文本编辑器,或者更改当前编辑器中的设置来执行此操作。对于转换,有许多半标准工具,例如dos2unix
和fromdos
。如果您没有这些,则此答案还有其他选择。
顺便说一句,错误消息出现乱码的原因是 CR 被打印为错误消息的一部分,终端将其视为返回行首的指令;然后它将消息的其余部分打印在消息开头的顶部。有点像这样:
-bash: /home/dir/path/.bash_profile
: No such file or directory
...但是第二行打印在第一行上,所以结果如下:
: No such file or directory_profile