A digitação de comandos em um terminal sempre retorna “-bash: / usr / bin / python: é um diretório”

3

Acho que estraguei alguma coisa no meu servidor Ubuntu ao tentar atualizar para o Python 2.7.2. Toda vez que eu digito um comando que não tem uma resposta, o padrão do bash é este:

-bash: /usr/bin/python: is a directory

Assim como diria se eu digitasse o nome de um diretório. Mas isso acontece toda vez que eu entro em um comando que não faz nada.

artur@SERVER:~$ dslkfjdsklfdshjk
-bash: /usr/bin/python: is a directory

Eu me lembro de mexer com o update-alternatives para apontar para o python em algum momento, talvez seja isso? Alguma idéia de por que isso está acontecendo?

Relacionado a este problema também é o fato de que quando tento usar o easy_install, ele me diz

-bash: /usr/bin/easy_install: /usr/bin/python: bad interpeter: Permission denied

/etc/fstab/ está definido como exec. Eu li que poderia consertar o segundo problema, mas não foi.

    
por Artur Sapek 13.11.2011 / 02:05

1 resposta

3

Quando você executa um comando foo (onde foo é substituído pelo comando que você está executando), o shell pesquisa todos os diretórios na variável de ambiente PATH para um arquivo chamado foo com permissões de execução .

Se não encontrar, então em um sistema Ubuntu com a configuração padrão, ele executa o comando /usr/lib/command-not-found foo . Isso é feito no arquivo /etc/bash.bashrc .

Isso é o que produz saída como:

$ foo
No command 'foo' found, did you mean:
 Command 'fio' from package 'fio' (universe)
 Command 'goo' from package 'goo' (universe)
 Command 'fop' from package 'fop' (main)
 Command 'fox' from package 'objcryst-fox' (universe)
 Command 'xoo' from package 'xoo' (universe)
 Command 'zoo' from package 'zoo' (universe)
foo: command not found

E:

$ gnuchess
The program 'gnuchess' is currently not installed.  You can install it by typing:
sudo apt-get install gnuchess

O programa command-not-found em si (por exemplo, /usr/lib/command-not-found ) é um script Python:

$ file /usr/lib/command-not-found
/usr/lib/command-not-found: a /usr/bin/python script text executable

Portanto, se sua instalação do Python estiver corrompida, espera-se que command-not-found sempre falhe e dê um erro sobre o Python. Você pode corrigir o problema corrigindo a instalação do Python.

O Ubuntu vem com o Python instalado e requer o Python para vários programas (como o Update Manager e o Software Center, por exemplo). Várias versões diferentes do Python estão disponíveis simultaneamente através das fontes de software oficiais e diferentes versões podem ser instaladas simultaneamente sem conflito. No entanto, também é possível instalar o Python manualmente construindo-o a partir da origem. Se você fizer isso, cabe a você certificar-se de que o Python compilado e instalado manualmente não esteja em conflito com nenhuma outra implementação do Python instalada.

Portanto, a primeira coisa que você deve fazer é desinstalar qualquer Python instalado manualmente. Ao instalá-lo, há um diretório no qual você teria executado o comando sudo make install . Você precisa ir para esse diretório e executar sudo make uninstall .

Depois de remover todas as instalações manuais do Python (se houver), reinstale completamente o Python:

sudo apt-get update
sudo apt-get --purge --reinstall install python

Isso provavelmente funcionará. Se isso não acontecer, forneça a saída de:

which -a python
file /usr/bin/python /usr/bin/python2.7
    
por Eliah Kagan 13.11.2011 / 03:29