/etc/bash.bashrc define uma função command_not_found_handle , que chama /usr/lib/command-not-found , que é um script do Python 3. Esse manipulador é chamado para comandos que o Bash não consegue encontrar.
Então, como uma correção de bandagem, você pode remover o manipulador:
unset -f command_not_found_handle
Atualização 2:
Após alguma discussão com o OP, o problema é causado por um executável do Python 2.7 acidentalmente colocado em /usr/bin/python3.4. (Então, minha primeira atualização não foi muito útil, mas está em revisão 4 se você quiser lê-la). Se isso acontecer com você, não reinicie o computador! Algumas partes da GUI dependem do Python 3. Você provavelmente precisará manter o terminal aberto também.
BTW, isso explica o loop infinito ao chamar um comando desconhecido no prompt do Bash. /usr/lib/command-not-found tem esta seção:
if sys.version < '3':
# We might end up being executed with Python 2 due to an old
# /etc/bash.bashrc.
import os
if "COMMAND_NOT_FOUND_FORCE_PYTHON2" not in os.environ:
os.execvp("python3", [sys.argv[0]] + sys.argv)
O que significa que quando executado pelo Python 2, ele chama python3 , mas como python3 é realmente o Python 2, o processo é repetido.
Atualização 3:
OP acabou reinstalando o Ubuntu, mas fiquei curioso, então eu abri uma VM, causei um problema semelhante (se não o mesmo problema) e corrigi-lo.
-
Causou o problema
sudo cp /usr/bin/python2.7 /usr/bin/python3.4 -
Confirmado o problema
- Ran
python3 --version, obtevePython 2.7.6 - Tentei executar
sdf, tive que pressionar Ctrl + C para parar o loop
- Ran
-
Corrigido:
sudo apt-get install --reinstall python3.4-minimalO pacote
python3.4-minimalfornece o próprio executável do Python 3.4. Todos os outros pacotes que eu verifiquei (python3,python3.4,python3-minimal) dependem depython3.4-minimalpor esse motivo.
(OP e eu tropeçamos nesta solução na primeira vez. Para mais detalhes sobre o que eu tentei, o que mais eu estraguei e como consertei, leia revisão 9 desta resposta .)