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

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?


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.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.