在 macOS BigSur 上的 *.sh 中执行时,导出 JAVA_HOME 无效
Exporting JAVA_HOME has no effect when execute in *.sh on macOS BigSur
我有一个脚本j16.sh,内容为:
export JAVA_HOME=`/usr/libexec/java_home -v 16.0.1`
echo Java 16
当我 运行 终端 (zsh) 上的脚本使用
./j16.sh
它打印“Java 16”,但是当我调用“java --version”时,版本并没有更改为 16。
但是,当我执行“导出”行(直接在终端上从脚本复制)时,Java 版本会按预期切换。
我做错了什么?显然,在脚本中执行,该行没有效果 - 但回显行有?
你应该使用Source
source j16.sh
这将 运行 脚本的命令而不是启动新的 shell,这将导致设置环境。
我有一个脚本j16.sh,内容为:
export JAVA_HOME=`/usr/libexec/java_home -v 16.0.1`
echo Java 16
当我 运行 终端 (zsh) 上的脚本使用
./j16.sh
它打印“Java 16”,但是当我调用“java --version”时,版本并没有更改为 16。
但是,当我执行“导出”行(直接在终端上从脚本复制)时,Java 版本会按预期切换。
我做错了什么?显然,在脚本中执行,该行没有效果 - 但回显行有?
你应该使用Source
source j16.sh
这将 运行 脚本的命令而不是启动新的 shell,这将导致设置环境。