![如何将正确的 Java 版本导出到 Bash 脚本中](https://linux22.com/image/1184555/%E5%A6%82%E4%BD%95%E5%B0%86%E6%AD%A3%E7%A1%AE%E7%9A%84%20Java%20%E7%89%88%E6%9C%AC%E5%AF%BC%E5%87%BA%E5%88%B0%20Bash%20%E8%84%9A%E6%9C%AC%E4%B8%AD.png)
Ubuntu 18.04.6 LTS
Bash 4.4.0
我的 Linux 机器上有 4 个版本的 Java。我还在这个机器上运行了多个 MC 游戏服务器。当我运行某些需要 Java 8 的服务器时,我会像这样指向 Java 8:
#!/bin/bash
java="/usr/lib/jvm/java-8-openjdk-amd64/bin"
当我运行某些需要 Java 16 的服务器时,我会像这样指向 Java 16:
#!/bin/bash
java="/usr/lib/jvm/java-16-oracle/bin"
因此,为了正确地将这些版本的 Java 导入变量,我编辑了 /etc/profile 文件以及所有内容#== Java 7以下是我添加的:
# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "`id -u`" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
#== Java 7
#== ======
JAVA7=/usr/lib/jvm/zulu7-ca-amd64
PATH=$PATH:$HOME/bin:$JAVA7/bin
#== Java 8
#== ======
JAVA8=/usr/lib/jvm/java-8-openjdk-amd64
PATH=$PATH:$HOME/bin:$JAVA8/bin
#== Java 11
JAVA11=/usr/lib/jvm/java-11-openjdk-amd64
PATH=$PATH:$HOME/bin:$JAVA11/bin
#== Java 16
JAVA16=/usr/lib/jvm/java-16-oracle
PATH=$PATH:$HOME/bin:$JAVA16/bin
export JAVA7
export PATH
export JAVA8
export PATH
export JAVA11
export PATH
export JAVA16
export PATH
如果我在脚本中使用 JAVA16 时这是正确的,那么如何在启动脚本中调用它?