O que mostra o pacote que você pode instalar para obter um comando?

2

Tenho notado em outras máquinas Ubuntu quando você não tem o Maven e você tenta mvn dizer para você instalar maven ou maven2 . Isso não acontece no meu xfce, como faço para ativá-lo?

    
por TsundereBug 27.07.2015 / 00:28

2 respostas

6

O pacote, apropriadamente, é chamado de command-not-found . A integração com bash para este pacote faz parte do próprio pacote bash e, a menos que você tenha modificado /etc/bash.bashrc , deve funcionar se você tiver esse pacote instalado.

Se você estiver usando zsh, adicione a /etc/zshrc :

. /etc/zsh_command_not_found
    
por muru 27.07.2015 / 00:32
4

resposta do muru está certa de que o pacote é chamado command-not-found . Ele basicamente fornece um python script /usr/lib/command-not-found que realmente faz o trabalho principal.

Mas as mensagens que você recebe no Ubuntu são definidas por uma função que explora as propriedades de command-not-found . É chamado command_not_found_handle e reside em /etc/bash.bashrc .

$ type -a command_not_found_handle 
command_not_found_handle is a function
command_not_found_handle () 
{ 
    if [ -x /usr/lib/command-not-found ]; then
        /usr/lib/command-not-found -- "";
        return $?;
    else
        if [ -x /usr/share/command-not-found/command-not-found ]; then
            /usr/share/command-not-found/command-not-found -- "";
            return $?;
        else
            printf "%s: command not found\n" "" 1>&2;
            return 127;
        fi;
    fi
}

Por causa da função acima, recebemos diferentes mensagens de erro em diferentes casos:

$ svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion

$ foobar
foobar: command not found

Deixa a verificação:

$ /usr/lib/command-not-found svn
The program 'svn' is currently not installed. You can install it by typing:
sudo apt-get install subversion

$ /usr/lib/command-not-found foobar
foobar: command not found

Como você não tem o pacote command-not-found habilitado, você está basicamente satisfazendo o seguinte snippet da função command_not_found_handle sempre:

printf "%s: command not found\n" "" 1>&2;
return 127;

Por isso, você sempre recebe o seguinte:

$ svn
svn: command not found

$ foobar
foobar: command not found

Em poucas palavras, você pode instalar o pacote command-not-found e adicionar a função (se já não estiver lá) mencionada acima ao arquivo /etc/bash.bashrc (para todos os usuários) ou ~/.bashrc (somente para você). / p>     

por heemayl 27.07.2015 / 00:38