我有一些窗口,使用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'

我不确定我从教程中获取的命令是针对另一个系统的,还是我遗漏了一个步骤。或者空格导致我的命令不能正常运行。

我看过很多类似的问题,但我还没有找到一个问题完全有我的错误。


我的家乡路:

$ echo $HOME
/cygdrive/c/Users/jhsu
$ echo ~
/cygdrive/c/Users/jhsu/

所以我认为文件应该放在正确的位置。


当前回答

如果你正在使用最新的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。

其他回答

当一切都在Cygwin失败时……

尝试在有问题的文件上运行dos2unix命令。

当你看到这样的错误消息时,它可能会有所帮助:

-bash: '\r':命令未找到

Windows样式的换行符在Cygwin中可能会导致问题。

dos2unix命令修改换行符,使它们与Unix / Cygwin兼容。

注意:dos2unix命令将就地修改文件,因此如果有必要,请采取预防措施。

如果你需要保留原始文件,你应该先备份它。

Mac用户注意:在Mac OS X上不存在dos2unix命令。

看看这个使用不同工具的各种解决方案的答案。


还有一个unix2dos命令可以做相反的事情:

它修改Unix换行符,使它们与Windows工具兼容。

如果你用记事本打开一个文件,所有的行一起运行,试试unix2dos filename。

如果你正在使用最新的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。

根据这个要点,解决方案是创建一个~/。bash_profile(在HOME目录下),包含:

export SHELLOPTS
set -o igncr

尝试执行以下命令

vim .bashrc
:set ff=unix
:wq!

我使用cygwin和Windows7,诀窍是不要把set -o igncr放入你的.bashrc,而是把整个SHELLOPTS放入你的环境变量在Windows下。(所以unix / cygwin…)我认为它不能从。bashrc工作,因为“滴已经被吸” 就像我们用德语说的那样。: -) 我的SHELLOPTS是这样的

braceexpand:emacs:hashall:histexpand:history:igncr:interactive-comments:monitor