我正在编写一个在远程机器上安装java的脚本。 在运行JRE的.bin文件之后,我怎样才能设置选项–config java而不需要用户input任何内容。
例如,当你input“alternatives –config java”时,会提示你select你想要的java版本。 由于我安装java(“/ usr / sbin / alternatives –install / usr / bin / java java /location/of/jdk1.6/bin/java 2”),#“2”选项应该始终是我想要select的Java。
所以,使用ssh命令执行,我怎么能select第二个选项的java替代品,而无需用户select该选项。 我希望它完全自动化。
这是在一个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
一般来说,你可以喂任何需要标准输入的程序,像这样:
echo -e "line 1\nline 2\nline 3" | program
您也可以非交互式地运行alternatives
命令。 而不是--config
,使用--set
选项来直接指定替代路径。
sudo alternatives --set java /location/of/jdk1.6/bin/java
这在Java 8中适用于我:
alternatives --install /usr/bin/java java /usr/lib/jvm/jre1.8.0_60/bin/java 3 alternatives --config java <<< '3'
我使用这个脚本来完成它:
tmp=`mktemp` echo 2 > $tmp alternatives --config java < $tmp rm -f $tmp
<
表示$tmp
文件的内容将被传递到alternatives命令的输入。
编辑:你可以简单地使用一个单一的管道,如其他建议:
echo 2 | sudo alternatives --config java