替代--config java bash脚本

时间:2011-05-10 17:39:52

标签: linux bash ssh

我正在编写一个在远程计算机上安装java的脚本。在为JRE运行.bin文件之后,我如何设置备选方案--config java而无需用户输入任何内容。

例如,当您键入“alternatives --config java”时,系统会提示您选择所需的Java版本。由于我安装java的方式(“/ usr / sbin / alternatives --install / usr / bin / java java /location/of/jdk1.6/bin/java 2”),#“2”选项应始终为我想要选择的java。

因此,使用ssh命令执行,如何在没有用户选择选项的情况下为java替代选择第二个选项。我希望它完全自动化。

这是一个bash脚本。

由于


以下是代码(现在正常工作):

#install the jre
sshRetValue=`ssh -p "22" -i $HOME/sshids/idrsa-1.old ${1} " /home/geiser/jms_adapter/jre-6u25-linux-i586.bin "`;
sshRetValue=`echo $?`;
if [ "$sshRetValue" -eq 0 ];then
        echo "java jre installed successfully";
        #set the alternative and stuff if needed
        ssh -p "22" -i $HOME/sshids/idrsa-1.old ${1} " /usr/sbin/alternatives --install /usr/bin/java java /root/jre1.6.0_25/bin/java 2 ";
        echo 2 | ssh -p "35903" -i $HOME/sshids/idrsa-1.old ${1} " alternatives --config java ";
else
        echo "java jre installation failed";
fi

5 个答案:

答案 0 :(得分:24)

您也可以非交互式运行alternatives命令。使用--config选项直接指定替代路径,而不是--set

sudo alternatives --set java /location/of/jdk1.6/bin/java

答案 1 :(得分:5)

这适用于Java 8:

 alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0_60/bin/java 3
 alternatives --config java <<< '3'

答案 2 :(得分:1)

通常,您可以提供任何需要标准输入内容的程序,如下所示:

echo -e "line 1\nline 2\nline 3" | program

答案 3 :(得分:1)

我是用这个脚本做的:

tmp=`mktemp`
echo 2 > $tmp
alternatives --config java < $tmp
rm -f $tmp

<表示$tmp文件的内容将传递给alternative命令的输入。

修改:您可以像使用其他建议一样使用单个管道:

echo 2 | sudo alternatives --config java

答案 4 :(得分:0)

我在/ usr / lib / jvm目录中有几个Java版本。

我的脚本必须首先删除旧的符号链接,然后创建新的符号链接,然后直接使用update-alternatives指定替代路径(我没有设法在没有update-prefix的情况下使替代项起作用)我的系统-Debian 8.11 我的脚本:

#!/bin/bash
echo "Removing old java 8 symlink.."
sudo unlink /usr/lib/jvm/java
echo "Linking new java.."
sudo ln -s /usr/lib/jvm/new_java /usr/lib/jvm/java

echo "Updating alternatives for java and java compiler"
sudo update-alternatives --set java /usr/lib/jvm/new_java/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/new_java/bin/javac