Le lien symbolique exécutable donne «commande introuvable»

24

J'ai créé un lien symbolique (hier) comme ceci:

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

Quand je cours:

prj-python file.py

Je reçois:

prj-python: command not found

Lorsque j'essaye de recréer le lien, j'obtiens:

ln: création du lien symbolique `/ usr / bin / prj-python ': le fichier existe

Pourquoi cela se produit-il? Mon $PATHest:

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

xralf
la source

Réponses:

21

Vous avez oublié la barre oblique initiale avant bin/python. Cela signifie /usr/bin/prj-pythonmaintenant pointe vers /usr/bin/bin/python. Sur quoi voudriez-vous qu'il pointe exactement?

janmoesen
la source
Il n'y a pas de barre oblique initiale. le sous-répertoire pwdest /home/xralf/my_virtual_envet il a binavec la pythoncommande
xralf
8
Vous avez oublié $PWD/auparavant bin.
rvs
Merci, cela a aidé. J'ai utilisé cette commande telle qu'elle était dans le livre.
xralf
25

A vérifier:

  • Effectuer un ls -l /usr/bin/prj-python

Si c'est comme:

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

Le fichier sera effectivement recherché dans / usr / bin / bin / python (c'est ce que xralf a essayé de dire). Réparer:

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

  • Si votre bin/pythonest un script shell (aka. Wrapper-script), vérifiez la ligne #! - (parfois appelée shebang -line) à la première ligne. S'il y a une faute de frappe comme #!/bin/bushcelle-ci, un message d'erreur non trouvé sera également généré.
ktf
la source
merci, votre réponse est encore plus soigneuse et pédagogique. Désolé, j'ai déjà accepté.
xralf
cela a beaucoup aidé ... la plupart des réponses si elles étaient trouvées concernaient $ PATH
Ja8zyjits
J'utilise un ln sans paramètre. Les gens devraient en effet utiliser ln -s, créant ainsi un lien symbolique.
Cedric
Aidé, et j'ai utilisé ln -s $PWD/python /usr/bin/python-prj. $PWDest utilisé pour obtenir le chemin complet.
Manwal