我需要能够使用某个 java 二进制文件调用某个进程。将该进程称为“foo”。然而,foo还通过java调用其他几个进程,但foo对我来说是一个黑盒子。当 foo 调用这些进程时,它只运行“java bar”、“java bat”等。我如何告诉 foo 和 foo 调用的任何进程仅使用 /full/path/to/java ?本质上我想对单个 shell 会话和/或单个进程树使用“update-alternatives”。
操作系统是Centos7,shell是bash。
设置系统 java 是不可能的,因为系统上的其他进程需要不同的 java 二进制文件。
答案1
创建一个~/myjava
仅包含符号链接的目录/full/path/to/bin/java
。
mkdir ~/myjava
ln -s /full/path/to/bin/java ~/myjava/java
使用命令搜索路径开头的此目录运行进程。此外,有些程序会查看环境变量JAVA_HOME
。确保它是一致的。实际的可执行文件应该位于名为或 的java
子目录中。bin
$JAVA_HOME
PATH=~/myjava:$PATH JAVA_HOME=/full/path/to foo