如何在 macOS 中的 Fish 中将特定版本的 Java 设置为 JAVA_HOME

如何在 macOS 中的 Fish 中将特定版本的 Java 设置为 JAVA_HOME

我之前使用 Bash 作为 macOS 上的默认 shell,但我决定切换到 Fish。

我正在尝试在 Java 的不同版本之间切换。在 bash 中,可以使用~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

我已经在鱼上设置了等价物~/.config/fish/fish_variables

set -x JAVA_HOME `/usr/libexec/java_home -v 1.7`

不幸的是,Java 版本没有改变。如何使用设置环境变量(特别是特定版本的 Java)~/.config/fish/fish_variables

更新:

根据常问问题,应使用 ,而不是 。我还创建了~/.config/fish/fish_variables,而不是。~/.config/fish/config.fish~/.config/fish/fish.config~/.config/fish/config.fish

答案1

虽然我不太熟悉,根据我所读的内容,问题似乎出在你的命令中的反引号上:

/usr/libexec/java_home -v 1.7

你会看到它在 Bash 中就像这样:

$(/usr/libexec/java_home -v 1.7)

记住这一点,看看此鱼类常见问题条目

如何运行子命令?反引号不起作用!

fish 使用括号来表示子命令。例如:

for i in (ls)
    echo $i
end

知道配置行最有可能应该是:

set -x JAVA_HOME (/usr/libexec/java_home -v 1.7)

答案2

function javaenv
   if test (count $argv) -eq 0
       /usr/libexec/java_home -V
   else
       switch $argv[1]
       case 'ls'
           /usr/libexec/java_home -V
       case 'set'
           set -xU JAVA_HOME (/usr/libexec/java_home -v $argv[2])
       end
   end
end

可以将上述函数放在 ~/.config/fish/functions 中,并使用它来获取 java_home 内容

javaenv

并使用以下代码设置 java_home 的内容

javaenv set 1.8

想法和内容取自这里

相关内容