Los comandos de mi terminal Ubuntu parecen ejecutarse en Python

Los comandos de mi terminal Ubuntu parecen ejecutarse en Python

Cuando ejecuto un comando incorrecto en mi terminal Ubuntu, en lugar de hacer eco de "comando no encontrado", el terminal no hace nada, y cuando presiono Ctrl+, Chace eco de algún seguimiento de pila de excepción de Python. ¿Hay algo mal? ¿Cómo puedo arreglar esto?

Por ejemplo, cuando ingreso "sdf", no hace nada. "sdf" no es un comando válido.

Cuando ingreso un comando no válido, la terminal no hace nada.

Pero cuando presiono Ctrl+ C, imprime este seguimiento de la pila de excepciones de Python.

Cuando presiono Ctrl-C, se hace eco de alguna pila de excepciones de Python.

El seguimiento de la pila es diferente cada vez.

Estoy usando Ubuntu 14.04, por lo que python2 es el predeterminado

$ type python python2 python3
python is /usr/bin/python
python2 is /usr/bin/python2
python3 is hashed (/usr/bin/python3)
$ readlink /usr/bin/python /usr/bin/python2 /usr/bin/python3
python2.7
python2.7
python3.4
$ python --version
Python 2.7.6
$ python3 --version
Python 2.7.6
$ readlink /usr/bin/python3.4
$ 
  • sudo apt-get install --reinstall pythonno ayudó.
  • sudo apt-get install --reinstall python3arrojó un error

Actualizar:
Entonces, después de probar muchos enfoques, terminé reinstalando Ubuntu. SeguirLa respuesta de wjandreay los comentarios parecen acertados a la hora de identificar el problema.

Respuesta1

/etc/bash.bashrcdefine una función command_not_found_handle, que llama /usr/lib/command-not-found, que es un script de Python 3. Este controlador se llama para comandos que Bash no puede encontrar.

Entonces, como solución de vendaje, puede desactivar el controlador:

unset -f command_not_found_handle

Actualización 2:

Después de una discusión con OP, resulta que el problema se debe a un ejecutable de Python 2.7 colocado accidentalmente en /usr/bin/python3.4. (Así que mi primera actualización no fue muy útil, pero está enrevisión 4si quieres leerlo). Si esto te sucede a ti,¡No reinicies tu computadora! Algunas partes de la GUI dependen de Python 3. Probablemente también necesitarás mantener la terminal abierta.

Por cierto, esto explica el bucle infinito al llamar a un comando desconocido en el indicador de Bash. /usr/lib/command-not-foundtiene esta sección en ella:

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)

Lo que significa que cuando Python 2 lo ejecuta, llama python3, pero como python3en realidad es Python 2, el proceso se repite.

Actualización 3:

OP terminó reinstalando Ubuntu, pero tenía curiosidad, así que abrí una VM, causé un problema similar (si no el mismo) y lo solucioné.

  1. Causó el problema

    sudo cp /usr/bin/python2.7 /usr/bin/python3.4
    
  2. Confirmado el problema

    • corrió python3 --version, consiguióPython 2.7.6
    • Intenté ejecutar sdf, tuve que presionar Ctrl+C para detener el bucle.
  3. Arreglado:

    sudo apt-get install --reinstall python3.4-minimal
    

    El paquete python3.4-minimalproporciona el ejecutable de Python 3.4. Todos los demás paquetes que verifiqué ( python3,, ) dependen de ese motivo.python3.4python3-minimalpython3.4-minimal

(OP y yo nos topamos con esta solución la primera vez. Para obtener más detalles sobre lo que probé, en qué más me equivoqué y cómo lo solucioné, learevisión 9 de esta respuesta.)

información relacionada