
Acabei de instalar o Ubuntu 18.04.4 LTS no Windows no Windows Subsystem For Linux (WSL). Quando executo um comando que não existe em meu terminal bash (por exemplo, se eu adicionar acidentalmente um s extra a ls
), recebo este erro:
$ lss
-bash: /usr/bin/python: No such file or directory
O erro está certo, só tenho o python3 instalado:
$ 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
Do uso anterior do Ubuntu, lembro que a mensagem deveria ser "O programa 'lss' pode ser encontrado nos seguintes pacotes:" Não preciso mais dessa mensagem e não quero instalar o python2 apenas para fazê-lo funcionar (esta pergunta tem respostas para resolver o problema instalando o py2).
É possível corrigir isso sem instalar o python2, vincular simbolicamente o python 3 como 2 ou tornar-se perfeito e nunca mais cometer erros de digitação?
Idealmente, eu poderia portar o script "comando não existe" para python3 oudesative-o completamente.
Responder1
Python3 não é um substituto para python2. Você precisa de uma versão python3 do lss
.
Eu atualizaria lss
se fosse você. É um script independente e a fonte pode ser encontrada emGitHub. 1 é óbvio:
print 'Usage:', __file__, '/path/to/dir'
"print" precisa usar "(" e ")" ao usar python3. Eu colocaria o script em um arquivo chamado lss3
ou algo parecido e usaria python3 lss3
para localizar e corrigir erros.
Responder2
Acontece que eu estava substituindo a command_not_found_handle
função (um recurso bash) com algo que chamou python
diretamente no meu 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 não é mais necessário (já foi?) E removê-lo resolveu meu problema - agora a antiga saída "pode ser encontrada nos seguintes pacotes" novamente.
Para completar: se eu quisesse pular o código python e a saída simples de que o comando não existe, eu poderia colocar isso no meu bashrc:
function command_not_found_handle {
echo Command not found: $1
return 127
}