在macOS BigSur上执行*.sh命令时,导出JAVA_HOME无效



我有一个脚本j16.sh,内容为:

export JAVA_HOME=`/usr/libexec/java_home -v 16.0.1`
echo Java 16

当我在终端(zsh)上使用

运行脚本时
./j16.sh

打印"Java 16",但当我调用"Java——version",版本没有更改为16。

然而,当我执行"export"行(从脚本中复制)(直接在终端上),Java版本被切换,如预期的那样。

我做错了什么?显然,在脚本中执行时,这一行没有效果——但是回显行有效果?

你应该使用Source

source j16.sh

这将运行脚本的命令,而不是启动一个新的shell,这将导致设置环境。