【问题标题】:echo %JAVA_HOME% works in cmd, but not in git bashecho %JAVA_HOME% 在 cmd 中有效,但在 git bash 中无效
【发布时间】:2019-01-19 12:54:21
【问题描述】:

Windows 10 用户。我最近第一次安装了 git,但遇到了一个特殊的问题。有人告诉我,如果我想在 git 中使用 java,我需要设置 JAVA_HOME 环境变量。

我能够为命令提示符正确更改JAVA_HOME,但我无法在 git bash 中显示相同的更改。输入 echo %JAVA_HOME% 会在命令提示符中返回正确的路径,但在 git bash 中会返回 %JAVA_HOME%

我进入系统设置并更改了系统变量,以便 JAVA_HOME 指向我的 jdk。我更新了系统和环境变量中的PATH 变量以指向bin 和jdk。我关闭并重新打开了 git bash 和命令提示符。我重新启动了我的机器,甚至重新安装了 git 和我的 jdk。我将我的 jdk 从 Java 10.0.2 升级到最新的 java 8 (171)。

这些都没有奏效。我经历了无数的SO帖子。我做错了什么?

【问题讨论】:

  • 这和git无关,只有bash。学习 shell 语法。
  • 你是对的,相信我,我会的。这只是我作为初学者看不到的东西,但现在我知道要真正注意语法。
  • git 使用的 shell 是 Linux shell 的一个版本,并且在提供 Linux 风格命令行的 Cygwin 下得到支持。这是一个完全不同的环境,需要 Linux 风格的环境变量。
  • 谢谢吉姆。我听说过 git 和 cygwin 兼容,但我不知道 git 最初是一个 Linux shell。我想在尝试使用它之前,我应该先研究一下软件的历史。你会建议我改用 Cygwin 吗?

标签: java command-prompt git-bash java-home


【解决方案1】:

事实证明,git 使用完全不同的语法来做 echo。

当我应该做echo $JAVA_HOME时,我一直在做echo %JAVA_HOME%

我看不出我应该使用 $ 而不是 % 符号,因为这些符号在我的字体中看起来非常相似。我只是在出于挫败感将答案复制/粘贴到 bash 中并在之前没有工作时让它神奇地工作后才发现。

但是是的,答案是使用$ 而不是%,因为它们的含义完全不同。 Git bash 使用 $,命令提示符使用 %。你会认为他们只是使用相同的符号来完成工作。

【讨论】:

  • Git bash 是来自 Unix/Linux 世界的 bash shell 的 Windows 版本,其中环境变量确实以 $ 为前缀。我不知道微软为什么决定使用 %,就像我不知道为什么在 Unix 使用 / 的地方使用 \。可能/可能有正当理由:)
  • 我想这确实是有道理的。我不知道 git bash 的起源,所以我不明白为什么他们会选择以不同的方式做事。
  • @fvu MS-DOS 没有目录,但有命令行选项——(比如现在的 dir /w)——所以当他们添加目录时,它们是 feqd 并且必须保持选项工作使用 \ 作为目录。
  • 在 bash 中,变量名后没有尾随 $
  • @fvu everything traces back to CP/M,包括驱动器号。关于% 符号我问了一个问题here
猜你喜欢
  • 2020-03-24
  • 2012-01-31
  • 2012-02-13
  • 2020-06-15
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-01
  • 2021-08-23
相关资源
最近更新 更多