'\ r':找不到命令 – .bashrc / .bash_profile
我有Windows,使用Cygwin,试图通过我的.bashrc文件永久设置JAVA_HOME 。 
.bashrc中:
 export PATH="$JAVA_HOME/bin:$PATH" export JAVA_HOME=$JAVA_HOME:"/cygdrive/c/Program Files (x86)/Java/jdk1.7.0_05" 
.bash_profile文件:
 if [ -f ~/.bashrc ]; then source ~/.bashrc fi 
运行cygwin:
 -bash: $'\377\376if': command not found -bash: $'then\r': command not found : No such file or directorysu//.bashrc -bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: syntax error near unexpected token `fi' -bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: `fi' 
我不确定是否从另一个系统的教程中获取了命令,或者如果我错过了一个步骤。 或者空白导致我的命令不能正常运行。
我已经看了很多类似的问题,但我还没有find一个问题有我的错误完全。
我的家乡之路:
 $ echo $HOME /cygdrive/c/Users/jhsu $ echo ~ /cygdrive/c/Users/jhsu/ 
所以我相信这些文件应该放在正确的位置。
当Cygwin中的所有其他function都失败时
 尝试在有问题的文件上运行dos2unix命令。 
当你看到这样的错误信息时可能会有所帮助:
 -bash: '\r': command not found 
Windows样式的换行符可能会导致Cygwin中的问题。
  dos2unix命令修改换行符,使它们与Unix / Cygwin兼容。 
小心: dos2unix命令修改了文件,所以必要时采取预防措施。
如果您需要保留原始文件,则应先备份。
  Mac用户请注意: Mac OS X上不存在dos2unix命令。 
看看这个答案的各种解决scheme使用不同的工具。
 还有一个unix2dos命令: 
它修改Unix换行符,使它们与Windows工具兼容。
 如果您用记事本打开一个文件,并且所有行都一起运行,请尝试unix2dos filename 。 
对于那些没有安装dos2unix的用户 (不想安装它):
 删除导致此错误的结尾字符\r : 
 sed -i 's/\r$//' filename 
说明 :
 选项-i用于就地编辑,我们直接在input文件中删除尾部的\r 。 因此请小心input正确的模式。 
 我正在使用cygwin和Windows7,诀窍不是把set -o igncr放到你的.bashrc中,而是把整个SHELLOPTS放到你的环境variables下。  (所以没有与Unix / Cygwin的…)我认为它不能从.bashrc工作,因为“滴已经吸”,我们会说德语。  ;-)所以我的SHELLOPTS看起来像这样 
 braceexpand:emacs:hashall:histexpand:history:igncr:interactive-comments:monitor 
 如果您正在使用最近的Cygwin(例如1.7),您还可以在第一个非注释行中使用以下行来启动.bashrc和.bash_profile : 
 # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples (set -o igncr) 2>/dev/null && set -o igncr; # this comment is needed 
 这将强制bash忽略Windows行分隔符中使用的回车符( \r )。 
请参阅http://cygwin.com/ml/cygwin-announce/2010-08/msg00015.html 。
 你也可以添加选项-o igncr给bash调用,例如 
 bash -x -o igncr script.sh 
SUBLIME TEXT
随着崇高,你只要去
查看 – >行尾 – >(select)Unix
然后保存该文件。 将解决这个问题。
那样容易!
对于使用Notepad ++的 WINDOWS用户(使用v6.8.3进行检查),您可以使用选项 – 编辑 – > EOL转换 – > Unix / OSX格式来更正特定文件
并再次保存您的文件。
编辑:仍然在v7.5.1(2017年8月29日)
那些使用notepad ++(6.8.1)将shell脚本从windows发布到linux的人们。
在记事本++编辑 – > EOL转换 – > Unix / OSX格式中设置以下内容
 根据这个要点 ,解决scheme是创build一个~/.bash_profile (在HOME目录下),其中包含: 
 export SHELLOPTS set -o igncr 
错误:
'\r':找不到命令
 是由于shell只能识别LF ( 0a )而无法识别类似于Windows的CRLF行尾( 0d 0a 0a )。 
混帐
 如果您在Windows上使用Git,请确保在安装过程中select了“ 按原样检出 ”。 然后确保你运行: git config --global core.autocrlf false ,所以Git在检出或提交文本文件时不会执行任何转换。 
 dos2unix 
如果你不使用Git,只需要将这些受影响的文件/脚本转换回类Unix的行尾(LF)
 dos2unix ~/.bashrc 
  注意: dos2unix命令是dos2unix软件包的一部分。 
  Ex / Vim编辑器+ tr 
如果你安装了Vim,下面的命令应该修正这些文件:
 ex +'bufdo! %! tr -d \\r' -scxa ~/.bash* 
  有用的别名: alias dos2unix="ex +'bufdo! %! tr -d \\\\r' -scxa" 。 
 tr 
 这里是使用tr的方法: 
 cat ~/.bashrc | tr -d '\r' > ~/.bashrc.fixed && mv -v ~/.bashrc.fixed ~/.bashrc 
要么:
 tr -d '\r' < filename > new_filename 
  注意: \r等同于\015 。 
 sed 
你可以尝试下面的命令:
 sed -i'.bak' s/\r//g ~/.bash* 
 recode 
 以下别名可能会有用(替代dos2unix命令): 
 alias unix2dos='recode lat1:ibmpc' alias dos2unix='recode ibmpc:lat1' 
资料来源: Windows下的Free Unix Tools(ssh,bash等) 。
 perl 
 以下perl命令可以将文件从DOS转换为Unix格式: 
 perl -p -i.bak -e 's/\015//g' ~/.bash* 
来源: 剥离^ M。
 tofrodos 
 在Linux上,像Ubuntu这样的dos2unix或者unix2dos不是标准的,你可以安装tofrodos软件包( sudo apt-get install tofrodos ),并定义下面的别名: 
 alias dos2unix='fromdos' alias unix2dos='todos' 
然后使用与上面相同的语法。
stream浪汉
 如果您正在使用Vagrant虚拟机并且发生这种情况,请尝试将binary选项设置为true : 
 # Shell provisioner, see: https://www.vagrantup.com/docs/provisioning/shell.html config.vm.provision "shell" do |s| s.binary = true # Replace Windows line endings with Unix line endings. s.path = "script.sh" end 
请参阅: Windows CRLF到Unix中的低频stream量问题 。
我有同样的问题。 解决scheme:我用pspad编辑器编辑文件,并给它一个unix格式(菜单 – 格式 – > UNIX)
我相信你可以用其他编辑器将这个格式设置为你的文件
对于那里的Emacs用户:
- 打开文件
- Mx集缓冲区文件编码系统
- select“unix”
这会将文件中的新字符更新为unix风格。 有关Emacs中“Newline Representation”的更多信息,请访问:
http://ergoemacs.org/emacs/emacs_line_ending_char.html
注意:如果有人喜欢从命令行执行,可以将上述步骤制作成Emacs脚本。
用Notepad ++解决:
1)菜单 – >编辑 – > EOL转换 – > Unix / OSX格式
2)然后保存
固定
 在EditPlus中,您可以从Document → File Format (CR/LF) → Change File Format...菜单中执行此操作,然后selectUnix / Mac OS X单选button。 
问题可能发生,因为从Windows机器创build/下载的文件/脚本。 请尝试转换成Linux文件格式。
 dos2unix ./script_name.sh 
要么
 dos2unix ~/.bashrc