O terminal não faz nada quando um comando desconhecido é digitado

0

Quando eu insiro um comando que é desconhecido no meu sistema, em vez de obter a usual mensagem de erro asdf: command not found , o terminal fica lá sem fazer nada. Se eu terminá-lo, às vezes não vejo nada, mas às vezes vejo algumas funções python recebendo uma interrupção do teclado, por exemplo

$ asd
^CTraceback (most recent call last):
  File "/usr/lib/python2.7/encodings/__init__.py", line 31, in <module>

import codecs
  File "/usr/lib/python2.7/codecs.py", line 8, in <module>
    """#"
KeyboardInterrupt

ou

$ cpioquw
^CTraceback (most recent call last):
  File "/usr/lib/command-not-found", line 5, in <module>
    from __future__ import absolute_import, print_function
KeyboardInterrupt

ou

$ asdf
^CTraceback (most recent call last):
  File "/usr/lib/python2.7/site.py", line 563, in <module>

    main()
  File "/usr/lib/python2.7/site.py", line 546, in main
    known_paths = addsitepackages(known_paths)
  File "/usr/lib/python2.7/site.py", line 328, in addsitepackages
addsitedir(sitedir, known_paths)
  File "/usr/lib/python2.7/site.py", line 190, in addsitedir
    names = os.listdir(sitedir)
KeyboardInterrupt

Parece não haver nenhuma consistência nas mensagens, e eu nunca vi isso acontecer antes. Alguma idéia de onde o problema pode estar vindo ou como eu poderia começar a investigar?

A remoção de .bashrc não parece ter efeito algum e nem a tentativa nos terminais virtuais também. Eu fiz um novo usuário e o comportamento é o esperado. Eu estou supondo que o problema está em um dos meus bash arquivos de configuração, mas eu não sei quais devo verificar.

Eu também tentei reinstalar o pacote command-not-found , que também não teve efeito.

Eu já tentei

sudo apt-get purge command-not-found command-not-found-data

e isso gera um erro que pode significar algo:

$ sudo apt-get purge command-not-found command-not-found-data 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  bbswitch-dkms dkms lib32gcc1 libc6-i386 libcuda1-331 libvdpau1 nvidia-prime
  nvidia-settings python-gdbm screen-resolution-extra
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED
  command-not-found* command-not-found-data* python3-commandnotfound*
0 to upgrade, 0 to newly install, 3 to remove and 238 not to upgrade.
2 not fully installed or removed.
After this operation, 4,205 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 287818 files and directories currently installed.)
Removing command-not-found (0.3ubuntu12) ...
Purging configuration files for command-not-found (0.3ubuntu12) ...
Removing python3-commandnotfound (0.3ubuntu12) ...
  File "/usr/bin/py3clean", line 4
SyntaxError: Non-ASCII character '\xc2' in file /usr/bin/py3clean on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
dpkg: error processing package python3-commandnotfound (--purge):
 subprocess installed pre-removal script returned error exit status 1
  File "/usr/bin/py3compile", line 4
SyntaxError: Non-ASCII character '\xc2' in file /usr/bin/py3compile on line 4, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
dpkg: error while cleaning up:
 subprocess installed post-installation script returned error exit status 1
Removing command-not-found-data (0.3ubuntu12) ...
Errors were encountered while processing:
 python3-commandnotfound
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ao fazer isso, notei que, se eu executar python ou python3 , acabarei executando a mesma versão, 2.7.6. Isso pode ter algo a ver com o problema?

    
por heuristicus 14.08.2015 / 03:02

1 resposta

0

Se você digitar declare -f -p , o bash listará todas as funções definidas do shell. Se houver uma função chamada command_not_found_handle , essa função será invocada em vez do comportamento usual do shell (somente no bash 4). Presumivelmente, no seu caso, essa função do shell está suspensa.

(No meu sistema Debian, essa função é definida em /etc/bash.bashrc , que é executado por /etc/profile , que é o arquivo de inicialização do sistema para todos os shells Bournelike. Tudo o que ele faz é invocar o comando command-not-found , que é o script Python do qual você está vendo um rastreio.)

    
por 14.08.2015 / 08:17

Tags