Altera o programa do Ubuntu que é executado quando um comando não pode ser encontrado

2

Quando eu digito um comando não encontrado em um PATH no Ubuntu, eu recebo algo assim:

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

Eu acredito que é um script que procura os arquivos do APT e sugere um pacote de instalação. Eu gostaria de mudá-lo para que ele me ofereça para baixá-lo com o toque de um 'y'. Duas perguntas:

1) Onde o arquivo está localizado?

2) Se eu apenas adicionar a linha de instalação da maneira trivial, ela vai reclamar que eu não sou um root e irá falhar (porque o rdesktop foi executado como um usuário mundano). Como faço para pedir uma senha e usá-la para obter acesso root?

    
por B. Marek 13.12.2011 / 11:17

1 resposta

6

Quando o bash encontra um comando que não pode encontrar, ele procura por uma função chamada command_not_found_handle () e a executa.

No Ubuntu, isso é definido em /etc/bash.bashrc

Por padrão, ele executa um script python em /usr/lib/command-not-found

Você pode fazer o que quiser, e isso é melhor feito no seu próprio arquivo ~/.bashrc :

    command_not_found_handle() {
        echo -n "Do you want to install $1? [N/y] "
        read -N 1 REPLY
        echo
        if [[ $REPLY == [Yy] ]]; then
            sudo apt-get install -- "$1"
        fi
    }

A parte sudo responde à parte da seção da sua pergunta, mas obviamente precisará solicitar uma senha para escalar a raiz para fazer a instalação.

    
por 13.12.2011 / 12:28