
Acabo de instalar Ubuntu 18.04.4 LTS en Windows en el Subsistema de Windows para Linux (WSL). Cuando ejecuto un comando que no existe en mi terminal bash (por ejemplo, si accidentalmente agrego un s adicional ls
), aparece este error:
$ lss
-bash: /usr/bin/python: No such file or directory
El error es correcto, solo tengo instalado python3:
$ ls /usr/bin/python*
/usr/bin/python3 /usr/bin/python3-jsonpatch /usr/bin/python3-jsonschema /usr/bin/python3.6m
/usr/bin/python3-jsondiff /usr/bin/python3-jsonpointer /usr/bin/python3.6 /usr/bin/python3m
Del uso anterior de Ubuntu, recuerdo que el mensaje debería ser "El programa 'lss' se puede encontrar en los siguientes paquetes:" Ya no necesito ese mensaje y no quiero instalar python2 solo para que funcione. (esta pregunta tiene respuestas para resolver el problema instalando py2).
¿Es posible solucionar este problema sin instalar python2, vincular python 3 como 2 o volverse perfecto y no volver a cometer errores tipográficos?
Idealmente, podría portar el script "el comando no existe" a python3 odesactivarlo por completo.
Respuesta1
Python3 no es un sustituto directo de python2. Necesita una versión Python3 de lss
.
Actualizaría lss
si fuera tú. Es un script independiente y la fuente se puede encontrar engithub. 1 es obvio:
print 'Usage:', __file__, '/path/to/dir'
"imprimir" necesita usar "(" y ")" cuando se usa python3. Pondría el script en un archivo llamado lss3
o algo así y lo usaría python3 lss3
para buscar y corregir errores.
Respuesta2
Resulta que estaba anulando la command_not_found_handle
función (una función de bash) con algo que llamó python
directamente en mi bashrc:
# if the command-not-found package is installed, use it
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
Este código ya no es necesario (¿alguna vez lo fue?) y eliminarlo solucionó mi problema; ahora aparece nuevamente el antiguo resultado "se puede encontrar en los siguientes paquetes".
Para completar: si quisiera omitir el código Python y la salida simple de que el comando no existe, podría poner esto en mi bashrc:
function command_not_found_handle {
echo Command not found: $1
return 127
}