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

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?


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é.

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.