我在 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_profile
dos2unix
答案2
记事本可能添加了一些$'\r'
ieCR
字符 - 因为在 Windows 下通常使用 CRLF 作为行终止符。
解决方案是使用另一个能够保持行尾原样的编辑器,例如 Windows 的 vim 或 Notepad2。
答案3
根据您使用的环境,您可能会遇到包含 CRLF 的脚本,例如使用 Visual SourceSafe、Perforce for Windows 等来存储文件时。但是,bash 有一种通用方法来解决这个问题:
export SHELLOPTS
set -o igncr
如果您将其放在 .bash_profile 或您可能正在使用的其他启动脚本的开头,那么您就不会遇到麻烦,因为启动脚本中第一个命令之前的 CRLF 序列不会造成任何损害。