树莓派OS下~/.bashrc文件执行报错:$'\r': command not found及unexpected end of file排查求助
解决树莓派.bashrc中的$'\r'错误与Unexpected EOF问题
看起来你遇到的问题根源其实不是语法错误,而是换行符格式不兼容导致的!
问题原因
你的.bashrc文件使用了Windows风格的换行符(CRLF,即\r\n),但树莓派OS是Linux系统,默认使用Unix风格换行符(LF,即\n)。bash会把Windows换行符里的\r字符当成一个独立的命令执行,所以才会弹出$'\r': command not found的错误;同时这种异常的换行符会干扰bash对脚本语法的解析,哪怕文件末尾看起来正常,也会触发unexpected end of file的报错。
修复步骤
方法1:用dos2unix转换(推荐)
dos2unix是专门用来转换Windows与Unix换行符的工具,先安装(如果没装的话):
sudo apt update && sudo apt install dos2unix
然后转换你的.bashrc文件:
dos2unix ~/.bashrc
方法2:用sed手动移除\r字符
如果不想安装工具,也可以用sed命令直接替换掉文件里的\r:
sed -i 's/\r$//' ~/.bashrc
验证修复结果
转换完成后,你可以用以下命令查看文件的换行符格式:
cat -A ~/.bashrc
如果每行末尾只有$(代表Unix风格的LF换行符),而没有^M$(代表Windows风格的CRLF换行符),就说明修复成功了。之后重新加载.bashrc:
source ~/.bashrc
应该就不会再报错了。
后续注意事项
这个问题通常是因为你在Windows系统下编辑了.bashrc文件,然后传到树莓派上导致的。建议后续编辑Linux配置文件时,要么直接在树莓派上用nano/vim编辑,要么使用支持切换换行符格式的编辑器(比如VS Code可以在右下角的状态栏切换为LF格式后再保存)。
内容的提问来源于stack exchange,提问作者Ciro García
相关产品推荐
相关产品推荐

