Para responder sua primeira pergunta, gostaria de sugerir a você --query
:
--query name
Display information about the link group like --display does, but in a machine parseable way (see section QUERY FORMAT below).
Armado com isso, você receberá a origem do link, por exemplo, no meu caso para java:
usr@srv % update-alternatives --query java
Name: java
Link: /usr/bin/java
[...]
Então, você vê minha cadeia como /usr/bin/java -> /etc/alternatives/java -> ...
.
Infelizmente, não tenho uma resposta para sua segunda pergunta. Eu tenho procurado por uma solução para isso há algum tempo, mas parece que não há solução simples, ainda. O que você poderia fazer é escrever um hack para analisar a saída da chamada --query
, talvez assim:
update-alternatives --query java | /bin/grep Link | cut -f 2 -d " "
que você poderia usar como entrada para a chamada --install
. Mas, como isso é bastante confuso, não recomendo. Em vez disso, você pode querer dar uma olhada em galternatives
, um front-end para o sistema de alternativas. Mesmo que eu não goste de usar material gráfico para esses trabalhos básicos, é bastante conveniente e acabei usando esta ferramenta em vez das ferramentas de linha de comando.
EDITAR
Eu tenho curiosidade de saber como o update-alternatives
sabe qual é o link simbólico do comando e deu uma pequena olhada nas fontes. É claro que o sistema de alternativas tem que armazenar a configuração para cada grupo e acontece que ele é chamado de diretório administrativo e escrito na página man; -)
Você encontrará essas informações em /var/lib/dpkg/alternatives
(por padrão). A segunda linha em cada um desses arquivos define o link mestre que você está procurando. Você pode extrair assim:
usr@srv $ sed -ne 2p /var/lib/dpkg/alternatives/java
/usr/bin/java
No entanto, essa é apenas uma solução alternativa para quem tem uma versão mais antiga de update-alternatives
.