Vraag Typ commando's in een terminal geeft altijd "-bash: / usr / bin / python: is een map"


Ik denk dat ik iets heb verknoeid op mijn Ubuntu-server terwijl ik probeerde te upgraden naar Python 2.7.2. Telkens als ik een opdracht typ die geen antwoord heeft, is de standaardwaarde van bash de volgende:

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

Net zoals het zou zeggen als ik de naam van een map heb getypt. Maar dit gebeurt elke keer dat ik een opdracht invoeg die niets doet.

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

Ik herinner me rotzooien met de update-alternatives om op een gegeven moment naar python te wijzen, misschien zou dat het kunnen zijn? Alle inkleuring over waarom dit gebeurt?

Gerelateerd aan dit probleem is ook het feit dat wanneer ik probeer easy_install te gebruiken, het mij vertelt

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

/etc/fstab/ is ingesteld om uit te voeren. Ik heb gelezen dat het tweede probleem kon oplossen, maar dat is niet zo.


3
2017-11-13 01:05


oorsprong




antwoorden:


Wanneer u een opdracht uitvoert foo (waar foo wordt vervangen door welk commando je ook uitvoert), de shell doorzoekt alle mappen in de PATH omgevingsvariabele voor een bestand genaamd foo met uitvoeringsmachtigingen.

Als het niet wordt gevonden, voert het de opdracht uit in een Ubuntu-systeem met de standaardconfiguratie /usr/lib/command-not-found foo. Dit gebeurt in de /etc/bash.bashrc het dossier.

Dat is wat output produceert zoals:

$ 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

En:

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

De command-not-found programmeer zelf (d.w.z. /usr/lib/command-not-found) is een Python-script:

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

Dus als uw Python-installatie kapot is, is de verwachting dat command-not-found zal altijd falen en een foutmelding geven over Python. U kunt het probleem oplossen door uw Python-installatie te repareren.

Ubuntu wordt geleverd met Python geïnstalleerd en vereist Python voor tal van programma's (zoals de Update Manager en het Software Center, bijvoorbeeld). Verschillende versies van Python zijn tegelijkertijd beschikbaar via de officiële softwarebronnen en verschillende versies kunnen tegelijkertijd worden geïnstalleerd zonder conflicten. Het is echter ook mogelijk om Python handmatig te installeren door het vanaf de bron te bouwen. Als je dat doet, is het aan jou om ervoor te zorgen dat je handmatig gecompileerde en geïnstalleerde Python niet conflicteert met andere geïnstalleerde Python-implementaties.

Dus het eerste dat je moet doen, is alle handmatig geïnstalleerde Python verwijderen. Bij de installatie ervan is er een map waarin u de opdracht zou hebben uitgevoerd sudo make install. U moet naar die map gaan en uitvoeren sudo make uninstall.

Nadat je alle handmatige Python-installaties hebt verwijderd (indien aanwezig), installeer Python dan volledig opnieuw:

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

Dat zal waarschijnlijk werken. Als dit niet het geval is, geef dan de uitvoer van:

which -a python
file /usr/bin/python /usr/bin/python2.7

3
2017-11-13 02:29



Heel erg bedankt voor zo'n uitgebreid antwoord. Het enige is dat ik 2.7.2 heb proberen te installeren met Pythonbrew. Ik zal je methode proberen en contact met je opnemen. - Artur Sapek
Pythonbrew bouwt en installeert Python in je homedirectory, waar niets aan mag veranderen /usr/bin/python. Het lijkt echter een vreemd toeval dat je dit probleem hebt op een systeem met een Python-brew-installatie van Python. - Eliah Kagan