Se você olhar para /usr/sbin/update-java-alternatives
, verá que iterates /usr/lib/jvm/.*.jinfo
para encontrar as versões instaladas, para que você possa fazer o mesmo para detectar as versões instaladas.
Quanto a não modificar PATH
a cada vez, você pode contornar PATH
completamente dizendo ao bash qual binário deve ser usado para java com o comando hash
embutido (run help hash
).
Veja aqui algo sobre o que você pode construir:
java_use() {
local file version versions=()
for file in /usr/lib/jvm/.*.jinfo; do
[[ -e $file ]] || continue
version=${file##*/.} version=${version%.jinfo}
versions+=("$version")
done
if (( ${#versions[@]} == 0 )); then
printf >&2 'No java installed\n'
return 1
fi
select version in "${versions[@]}"; do
if [[ -n $version ]]; then
export JAVA_HOME="/usr/lib/jvm/$version"
hash -p "$JAVA_HOME/bin/java" java
break
fi
done
type java
}