Ich habe eine Kombination aus Java7 und Java8 auf meinem 14.04-Computer installiert.
Wenn ich zwischen ihnen wechseln möchte, mache ich eine sudo update-alternatives --config java
. Wenn Sie es jedoch auf diese Weise ändern, wird die aktuelle Java-Version auf allen Terminals geändert. Ich wollte es nur für das aktuelle Terminal ändern. Zum Beispiel möchte ich Java-Code, der in 1.7 geschrieben wurde, mit anderem Code testen, der in 1.8 kompiliert wurde.
Eine andere Alternative wäre so etwas zu tun
function java_use() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
export PATH=$JAVA_HOME/bin:$PATH
java -version
}
Aber das funktioniert nur auf meinem Mac und ich wollte etwas saubereres, ohne es PATH
jedes Mal ändern zu müssen . Vielleicht mit chroot
?
Wie kann ich meine Java-Version "sauber" ändern - vorzugsweise nur zwischen den installierten Versionen - und nur für die aktuelle Terminalsitzung?
Antworten:
Wenn Sie sich das ansehen
/usr/sbin/update-java-alternatives
, werden Sie sehen, dass es iteriert/usr/lib/jvm/.*.jinfo
, um die installierten Versionen zu finden, sodass Sie dasselbe tun können, um die installierten Versionen zu erkennen.Wenn Sie nicht
PATH
jedes Mal ÄnderungenPATH
vornehmen möchten , können Sie Bash vollständig umgehen, indem Sie dem eingebautenhash
Befehl (runhelp hash
) mitteilen, welche Binärdatei für Java verwendet werden soll .Hier ist etwas, worauf Sie aufbauen können:
quelle
--config java
Fall ist), aber so wie sie ist, verdient sie die Antwort.printf 'Currently using: '; type -P java
am Anfang der Funktion setzen