De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

command-not-found no Ubuntu

Colaboração: Diego Machado de Assis

Data de Publicação: 11 de November de 2008

Quem utiliza Ubuntu 7.04 ou superior já deve ter se deparado com uma mensagem mais ou menos assim:

  $ blender
  O programa 'blender' não está instalado atualmente.  Você pode instalá-lo digitando:
  sudo apt-get install blender

Isso acontece pois quando você digita um comando para abrir uma aplicação que não está instalada no sistema, os repositórios do apt são automaticamente escaneados em busca do programa. Caso seja encontrado algum pacote que contenha a aplicação, ele é sugerido para instalação.

Porém para algumas pessoas essa funcionalidade pode acabar tornando-se um incoveniente, pois existe um tempo extra gasto até o retorno do comando. Por exemplo, suponha que quiséssemos executar um simples ls mas digitássemos por engano sl.

  $ time sl
  O programa 'sl' não está instalado atualmente.  Você pode instalá-lo digitando:
  sudo apt-get install sl
  bash: sl: comando não encontrado
  
  real    0m1.509s
  user    0m0.408s
  sys     0m0.080s

Veja que demorou aproximadamente 1,5 segundos para o shell retornar. Pode parecer pouco tempo a princípio, mas quando há uma reincidência, essa espera pode tornar-se um aborrecimento.

Quem implementa essa funcionalidade no Ubuntu é um script em python chamado command-not-found (que pode ser encontrado em /usr/lib/command-not-found). Para desativar sua execução no bash, basta editar o arquivo /etc/bash.bashrc e comentar as seguintes linhas (adicione o caracter '#' no início de cada linha):

  if [ -x /usr/lib/command-not-found ]; then
   function command_not_found_handle {
      # check because c-n-f could've been removed in the meantime
      if [ -x /usr/lib/command-not-found ]; then
         /usr/bin/python /usr/lib/command-not-found -- $1
         return $?
      else
         return 127
      fi
   }
  fi

Dessa forma, o script não será mais executado já na próxima sessão do bash que for iniciada.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Diego Machado de Assis