我是 bash 新手。我的机器上安装了多个 java 版本,我想为所有版本创建一个别名。通常,java 的可执行文件位于文件夹 /Library//bin/java 中。我想创建别名,以便在 bash 中输入 java9 并执行 java9 的可执行文件(对于其他 java 版本也类似)。这个怎么做。
请注意,通常对于一个 java 版本,我添加 JAVA_HOME 并将路径附加到 PATH 中。但不知道如何做到这一点。
我正在阅读有关此内容的文章,看起来 eval 可能是一个选择,但不知道如何执行此操作。
答案1
javav () {
local version="$1"
shift
case "$version" in
8) JAVA_HOME='/Library/some/path/java' \
PATH="$JAVA_HOME/bin:$PATH" java "$@"
;;
8.7) JAVA_HOME='/Library/some/other/path/java' \
PATH="$JAVA_HOME/bin:$PATH" java "$@"
;;
9) JAVA_HOME='/Library/some/other/path2/java' \
PATH="$JAVA_HOME/bin:$PATH" java "$@"
;;
*) printf 'Unknown java version: %s\n' "$version" >&2
return 1
esac
}
这是一个 shell 函数javav
(如果与任何现有工具冲突,请重命名)。您可以将其放入您的.bash_profile
或.bashrc
文件中,或者放入其自己的文件中(在这种情况下,您需要使用 来获取它source filename
)。
它采用版本号作为其第一个参数,并设置JAVA_HOME
为相应目录的路径,并在使用其余命令行参数执行之前PATH
包含$JAVA_HOME/bin
在开头。java
由于java
可执行文件大概位于 中,$JAVA_HOME/bin
并且由于它位于 中PATH
,因此这就是将启动的 Java 版本。
这意味着您可以像这样使用它:
$ javav 9 other arguments to java here
JAVA_HOME
假设该函数已使用正确的目录设置PATH
,这应该启动 Java 9 并传递other arguments to java here
给java
可执行文件。
注意:我不是 Java 开发人员,我不知道设置PATH
上面的方式是否有意义,但您可以修改它以满足您的需求。