我的主机系统是Windows 7
我想在 CYGWIN 中使用它。
我需要将名为 JAVA_HOME 的环境变量设置为c/program files (x86)/java/jre7
这是我试过的:
$myjava=cat c/program\ files\ \(x86\)/java/jre7
export JAVA_HOME=myjava
但我得到了:
第9行:c / program files(x86)/ java / jre7:没有这样的文件或目录 错误:未设置JAVA_HOME。
我做错了什么?
答案 0 :(得分:3)
export JAVA_HOME=c:/program\ files\ \(x86\)/java/jre7
答案 1 :(得分:1)
两个错误:首先,你试图用一个设置很好的一次性变量来执行“c/program files (x86)/java/jre7
”,其次,看起来你正在使用bourne-shell语义:首先你必须设置变量,然后你可以导出它。
行$myjava=cat c/program\ files\ (x86)/java/jre7
说取名为“myjava”的变量,提取值(等待,var不存在?好吧,值将是空字符串...),使用该值作为变量的名称,并将该变量设置为值“cat”。实际上不要在shell环境中设置它,我们将运行“c / program \ files \(x86)/ java / jre7”并将其设置为该命令环境中的额外变量。这就是为什么你得到“c / program files(x86)/ java / jre7:没有这样的文件或目录”。
行export JAVA_HOME=myjava
,在bash我会说这意味着创建/设置一个名为JAVA_HOME
的变量,将其设置为字符串“myjava”,并将其标记为导出变量< / i>的。错误消息“错误:未设置JAVA_HOME”。或者意味着你需要将其分解(不使用bash?),如JAVA_HOME=$myjava; export JAVA_HOME
,或者这意味着JAVA_HOME没有设置到任何有意义的,如果你修复了第一个这一切都会好起来的。
答案 2 :(得分:1)
@BMargulies答案提供了一个解决方案。但我认为理解为什么你所做的是错误的是相关的...所以下次你可以(至少)采取更好的方法来纠正它。
查看您的第一个命令行......
$myjava=cat c/program\ files\ \(x86\)/java/jre7
这有很多问题。首先,设置shell变量的语法是:
<name>=<word>
所以你在第一行中实际做的是:
它将一个带有一些未知变量名的变量设置为字符串“cat”:
然后,它尝试运行该行的其余部分(即“c / program \ files \(x86)/ java / jre7”)作为命令。但它不是命令:它是一个目录。这是您看到的“未找到”错误消息的最可能来源。
最重要的是,您似乎尝试使用“cat”命令。 “cat”命令(以该形式)读取文件的内容并将其写入标准输出。
简而言之,这里完全不需要“猫”。您只需要目录的路径名。所以第一行的正确形式是:
myjava=c/program\ files\ \(x86\)/java/jre7
或使用引号:
myjava="c/program files (x86)/java/jre7"
或
myjava='c/program files (x86)/java/jre7'
这三种引用都具有相同的效果。它们会导致“=”之后的内容被解析为单个<word>
。 (3种引用样式之间的行为有所不同,但这里并不重要。)
第二行实际上接近它所需要的。你写道:
export JAVA_HOME=myjava
表示将JAVA_HOME设置为文字字符串“myjava”...并将其导出。但是你想使用名为“myjava”的shell变量的值。那就是:
export JAVA_HOME=$myjava
“$ myjava”表示“插入变量'myjava'的值”......见上文。
@BMargulies回答将两行合并为on,并取消(不必要的)局部变量“myjava”。这就是我做的方式。