Tutoriel Linux

Onde encontrar um binário no Linux e seu manual.

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Você acabou de instalar uma ferramenta, mas já não sabe se ela está localizada em /usr/bin, ou em outro lugar. A ordem onde está Ele pode recuperar o binário, o código-fonte e as páginas de manual. No entanto, não responde à pergunta mais importante antes de qualquer intervenção: qual arquivo o seu shell realmente executará?

Para evitar modificar a instalação defeituosa, vou cruzar os dedos. onde está com comando -v E tipoEsses comandos não procuram a mesma coisa. Essa diferença torna-se útil rapidamente quando várias versões de um programa, um alias ou uma função Bash têm o mesmo nome.

Tux usa uma lupa para encontrar um binário do Linux e sua página de manual em meio a vários caminhos.
O Whereis pesquisa por binários, fontes e páginas de manual em vários locais do Linux.

O que o Whereis realmente procura

O caso de uso mais simples é fornecer o nome de um comando, sem nenhuma opção:

onde está o bash
whereis ssh
onde está o nginx

A saída pode conter vários caminhos na mesma linha. onde está Ele busca três tipos de arquivos: o binário, o código-fonte e a documentação do manual. Examina locais conhecidos do Linux e também leva em consideração… CAMINHO e de MANPATH


whereis -m bash
whereis -s bash
  • -b busca por binários;
  • -m
  • -s procure fontes.

Uma busca vazia no código-fonte não indica necessariamente que o programa esteja instalado incorretamente. As distribuições geralmente instalam o binário e o manual sem incluir o código-fonte. /usr/srcPara visualizar os arquivos efetivamente inspecionados em sua máquina, utilize:

onde está -l

onde está a página de manual Este comando detalha esses caminhos e as opções disponíveis. Ele não realiza uma busca recursiva de arquivos. Para encontrar um arquivo específico em uma árvore de diretórios, consulte o guia sobre [link para o guia]. encontrar no Linux.

Verifique o comando realmente executado pelo shell.

Se o seu objetivo é saber o que aparecerá quando você digitar python3, Ou montool comando -v :

comando -v python3
comando -v nginx
comando -v minhaferramenta

Este comando segue a resolução do shell. Dependendo do nome fornecido, ele pode exibir o caminho para um executável, um comando interno, uma função ou a definição de um alias. Seu código de retorno também permite verificar corretamente a presença de um comando em um script:

se o comando -v mytool >/dev/null 2>&1; então
    eco "minha ferramenta está disponível"
outro
    
fi

onde está

tipo Vai além, explicando como o Bash interpreta o nome:

tipo de CD
tipo ls
digite -a ls
tipo -P ls
  • tipo de CD indica que CD é um comando interno do shell;
  • tipo ls Mostra a primeira definição utilizada;
  • digite -a ls Exibe aliases, funções, comandos internos e executáveis ​​com esse nome;
  • tipo -P ls força a busca por um arquivo executável em CAMINHO.

Isso descreve esses resultados com precisão. Se você estiver usando Zsh, Fish ou outro shell, consulte a documentação específica: a resolução de aliases e funções não é a mesma em todos os casos.

Entendendo por que “qual” não conta toda a história.

qual continua sendo comum em tutoriais:

qual python3
qual nginx

Normalmente, ele procura um executável em CAMINHOO problema é que, frequentemente, trata-se de um programa externo que desconhece o estado exato do shell atual. Dependendo da implementação e da distribuição, ele pode ignorar um alias, uma função ou um comando interno. Para um teste em um script de shell, comando -v é mais adequado. Para entender uma colisão de nomes em uma sessão interativa, digite -a fornece mais informações.

Um exemplo simples ilustra a diferença:

alias ll='ls -lah'
onde está tudo

comando -v ll
tipo II

onde está não foi possível encontrar um arquivo chamado tudo, porque o alias não é um binário. comando -v E tipo No entanto, eles veem a conhecida definição de Bash. O artigo sobre o alias no Linux Explica como verificar e contornar esses problemas sem excluir sua configuração.

Identificar múltiplas instalações do mesmo programa

As colisões costumam ocorrer após a instalação manual em /usr/local/bin, a adição de $HOME/.local/bin ou a implantação de uma versão em /optarComece por comparar os resultados:

onde está python3
digite -a python3
comando -v python3
digite -P python3
readlink -f "$(type -P python3)"

onde está Pode exibir vários arquivos binários e manuais. digite -a Mostra as versões que o Bash encontra na ordem de resolução. comando -v confirma a primeira escolha, então link de leitura -f Resolve qualquer possível link simbólico. Por fim, verifique o proprietário do pacote do arquivo:

dpkg -S "$(type -P python3)"
rpm -qf "$(type -P python3)"
pacman -Qo "$(type -P python3)"

Execute apenas o comando apropriado para sua distribuição. Se nenhum pacote contiver o arquivo, ele pode ter sido instalado manualmente. Antes de substituí-lo, verifique a versão, o destino real e os serviços que o utilizam. O tutorial sobre Arquivos tar.gz no Linux mostra por que uma cópia em /usr/local/bin deve permanecer rastreável.

O Bash também armazena em cache certos caminhos que já foram resolvidos. Após mover ou substituir um executável, limpe esse cache e verifique novamente:

hash -l
hash -r
comando -v python3
digite -a python3

em vez de excluir um binário aleatório. O guia sobre PATH no Linux Detalha o teste temporário e a modificação permanente.

Limitar o uso do `whereis` a uma pasta específica.

Para controlar o software instalado em /optarVocê pode substituir os caminhos de pesquisa para binários ou manuais. A opção -f marca o fim da lista de pastas e o início dos nomes a serem pesquisados:

whereis -b -B /opt/mytool/bin /usr/local/bin -f mytool
whereis -m -M /opt/mytool/share/man -f mytool

Essa busca direcionada permite verificar o conteúdo de uma instalação sem precisar escanear o disco inteiro. Ela também não altera nada. CAMINHOnem o comando executado pelo shell. Portanto, lembre-se da seguinte ordem antes de remover ou substituir um programa:

  • usar comando -v para descobrir a definição ativa;
  • lançar digite -a para detectar colisões;
  • resolver os links com link de leitura -f ;
  • Verifique o pacote proprietário do arquivo;
  • usar onde está para encontrar os arquivos binários e a documentação associada.

Com essas verificações, você sabe qual arquivo será executado, de onde ele vem e onde encontrar o manual. Assim, você pode corrigir uma instalação ou um… CAMINHO sem apagar acidentalmente a versão correta.

sudo apt update && sudo apt upgrade