【发布时间】:2022-01-10 12:36:26
【问题描述】:
我有 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'
我不确定我是否从适用于其他系统的教程中获取命令,或者我是否缺少步骤。或者空格导致我的命令无法正常运行。
我查看了多个类似的问题,但我没有找到一个问题与我的错误完全一致。
我的家路:
$ echo $HOME
/cygdrive/c/Users/jhsu
$ echo ~
/cygdrive/c/Users/jhsu/
所以我认为文件应该放在正确的位置。
【问题讨论】:
-
echo ~给了什么? -
$ echo ~ /cygdrive/c/Users/jhsu/
-
这个问题不是 cygwin 特有的——如果在 DOS 机器上创建脚本并执行二进制传输到 Linux 系统并在那里运行,也会发生同样的问题;我已经从标题中删除了 cygwin 引用,因此在其他情况下遇到此问题的人更有可能认真对待这个问题(及其非 Cygwin 特定的答案)。
-
关于这个问题的背景,特别是在 Cygwin 的上下文中,似乎是在 2007 年左右 Cygwin 开始以 Unix 样式处理回车 - 请参阅 neuron.yale.edu/phpBB/viewtopic.php?t=878。该论坛帖子解释了以下几个答案中讨论的 igncr shell 选项。
-
在命令行上,
export SHELLOPTS然后set -o igncr为我运行了配置脚本