编辑 ~/.bash_profile 时遇到问题:-bash:$'\r':未找到命令

编辑 ~/.bash_profile 时遇到问题:-bash:$'\r':未找到命令

我在 Windows 7 上安装了 CygWin。使用记事本,我编辑了 ~/.bash_profile 文件以添加到 PATH 变量中……

PATH="${PATH}:/cygdrive/c/apache-ant-1.8.2/bin"

现在,当我通过 SSH 连接到我的 Windows 机器时,出现此错误...

-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: $'\r': command not found
-bash: /home/dev/.bash_profile: line 39: syntax error: unexpected end of file

并且我的 PATH 未设置。有人知道我该如何纠正这个问题吗?

答案1

如上所述,Windows 使用作为行分隔符。不过,既然中\n\r已经有了 s ,您可以使用该实用程序将其删除。\r.bash_profiledos2unix

答案2

记事本可能添加了一些$'\r'ieCR字符 - 因为在 Windows 下通常使用 CRLF 作为行终止符。

解决方案是使用另一个能够保持行尾原样的编辑器,例如 Windows 的 vim 或 Notepad2。

答案3

根据您使用的环境,您可能会遇到包含 CRLF 的脚本,例如使用 Visual SourceSafe、Perforce for Windows 等来存储文件时。但是,bash 有一种通用方法来解决这个问题:

export SHELLOPTS
set -o igncr

如果您将其放在 .bash_profile 或您可能正在使用的其他启动脚本的开头,那么您就不会遇到麻烦,因为启动脚本中第一个命令之前的 CRLF 序列不会造成任何损害。

相关内容