Ausführbarer symbolischer Link führt zu "Befehl nicht gefunden"

24

Ich habe einen symbolischen Link (gestern) wie folgt erstellt:

sudo ln -s bin/python /usr/bin/prj-python

Wenn ich renne:

prj-python file.py

Ich bekomme:

prj-python: command not found

Wenn ich erneut versuche, den Link zu erstellen, erhalte ich Folgendes:

ln: Symbolische Verknüpfung erstellen `/ usr / bin / prj-python ': Datei existiert

Warum passiert das? Mein $PATHist:

/ usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / opt / real / RealPlayer

xralf
quelle

Antworten:

21

Sie haben den ersten Schrägstrich zuvor vergessen bin/python. Das heißt /usr/bin/prj-pythonjetzt weist auf /usr/bin/bin/python. Worauf soll es genau hinweisen?

janmoesen
quelle
Es gibt keinen anfänglichen Schrägstrich. Das pwdist /home/xralf/my_virtual_envund es hat Unterverzeichnis binmit pythonBefehl
Xralf
8
Als, Sie haben vergessen , $PWD/vor bin.
rvs
Danke, das hat geholfen. Ich habe diesen Befehl wie im Buch verwendet.
Xralf
25

Dinge zu überprüfen:

  • Führen Sie eine ls -l /usr/bin/prj-python

Wenn es so aussieht :

lrwxrwxrwx (...) /usr/bin/prj-python -> bin/python

Die Datei wird tatsächlich unter / usr / bin / bin / python durchsucht (das hat xralf versucht zu sagen). Fix:

rm /usr/bin/prj-python
ln -s /full/path/to/your/python /usr/bin/python-prj

  • Wenn bin/pythones sich um ein Shell-Skript handelt (auch bekannt als Wrapper-Skript), überprüfen Sie die #! - Zeile (manchmal auch als Shebang- Zeile bezeichnet ) in der ersten Zeile. Wenn ein solcher Tippfehler auftritt #!/bin/bush, wird auch eine nicht gefundene Fehlermeldung ausgegeben.
ktf
quelle
danke, deine antwort ist noch vorsichtiger und lehrreicher. Entschuldigung, ich habe bereits zugesagt.
Xralf
das hat sehr geholfen ... die meisten Antworten, die gefunden wurden, waren über $ PATH
Ja8zyjits
Ich benutze eine ln ohne Parameter. Die Leute sollten in der Tat ln-s verwenden und so eine symbolische Verbindung herstellen.
Cedric
Geholfen, und ich habe verwendet ln -s $PWD/python /usr/bin/python-prj. $PWDwird verwendet, um den vollständigen Pfad zu erhalten.
Manwal