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

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


当前回答

1. 选择

EditorConfig—这是我的选择。


2. 相关性

这个答案与2018年3月有关。在未来,来自这个答案的数据可能会过时。

这个答案的作者个人在2018年3月使用EditorConfig。


3.限制

您需要使用一种受支持的IDE/编辑器。


4. 论证

简单的用法。我需要设置我的.editorconfig文件1次,我创建我的项目,→我可以忘记一些平台,风格和ide特定的问题。 跨平台、跨语言、跨ide、跨编辑器。


5. 例子

5.1. 简单的

我为Sublime Text→我的文本编辑器安装了EditorConfig插件。我在Sublime Text中编辑文件。

例如,我有一个sashacrlf.sh文件:

echo "Sasha" &
echo "Goddess!" &

我在Cygwin中运行这个文件:

$ bash sashacrlf.sh
Sasha
sashacrlf.sh: line 1: $'\r': command not found
Goddess!

我在与sashacrlf.sh相同的项目中创建了一个文件.editorconfig。

[*.sh]
end_of_line = lf

这意味着,如果您在编辑器中保存项目中任何扩展名为.sh的文件,EditorConfig将为该文件设置UNIX行结束符。

我再次在文本编辑器中保存sashacrlf.sh。我再次运行sashacrlf.sh:

$ bash sashacrlf.sh
Sasha
Goddess!

我不能在控制台得到意外的输出。

5.2. 多种文件扩展名

例如,我想在所有扩展名为.sh、.bashrc和.bash_profile的文件中设置UNIX行结束符。 我将这些行添加到我的.editorconfig文件中:

[*.{sh,bashrc,bash_profile}]
end_of_line = lf

现在,如果我保存任何扩展名为.sh、.bashrc或.bash_profile的文件,EditorConfig会自动为该文件设置UNIX行结束符。


6. 额外的链接

EditorConfig官方网站。

其他回答

我也有同样的问题。解决方案:我用pspad编辑器编辑文件,并给它一个unix格式(菜单-格式-> unix)

我相信您可以使用许多其他编辑器将此格式设置为您的文件

1. 选择

EditorConfig—这是我的选择。


2. 相关性

这个答案与2018年3月有关。在未来,来自这个答案的数据可能会过时。

这个答案的作者个人在2018年3月使用EditorConfig。


3.限制

您需要使用一种受支持的IDE/编辑器。


4. 论证

简单的用法。我需要设置我的.editorconfig文件1次,我创建我的项目,→我可以忘记一些平台,风格和ide特定的问题。 跨平台、跨语言、跨ide、跨编辑器。


5. 例子

5.1. 简单的

我为Sublime Text→我的文本编辑器安装了EditorConfig插件。我在Sublime Text中编辑文件。

例如,我有一个sashacrlf.sh文件:

echo "Sasha" &
echo "Goddess!" &

我在Cygwin中运行这个文件:

$ bash sashacrlf.sh
Sasha
sashacrlf.sh: line 1: $'\r': command not found
Goddess!

我在与sashacrlf.sh相同的项目中创建了一个文件.editorconfig。

[*.sh]
end_of_line = lf

这意味着,如果您在编辑器中保存项目中任何扩展名为.sh的文件,EditorConfig将为该文件设置UNIX行结束符。

我再次在文本编辑器中保存sashacrlf.sh。我再次运行sashacrlf.sh:

$ bash sashacrlf.sh
Sasha
Goddess!

我不能在控制台得到意外的输出。

5.2. 多种文件扩展名

例如,我想在所有扩展名为.sh、.bashrc和.bash_profile的文件中设置UNIX行结束符。 我将这些行添加到我的.editorconfig文件中:

[*.{sh,bashrc,bash_profile}]
end_of_line = lf

现在,如果我保存任何扩展名为.sh、.bashrc或.bash_profile的文件,EditorConfig会自动为该文件设置UNIX行结束符。


6. 额外的链接

EditorConfig官方网站。

问题可能是因为在windows机器上创建/下载的文件/脚本。请尝试转换成linux文件格式。

dos2unix ./script_name.sh

or

dos2unix ~/.bashrc

崇高的文本

有了sublime你就去了

View -> Line ends -> (select)Unix . xml

然后保存文件。将修复此问题。

就这么简单!

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

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