El enlace simbólico ejecutable da como resultado "comando no encontrado"

24

Creé un enlace simbólico (ayer) como este:

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

Cuando corro:

prj-python file.py

Yo obtengo:

prj-python: command not found

Cuando intento crear el enlace nuevamente, obtengo:

ln: creando enlace simbólico `/ usr / bin / prj-python ': el archivo existe

¿Por qué está pasando eso? Mi $PATHes:

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

xralf
fuente

Respuestas:

21

Olvidó la barra inicial antes bin/python. Esto significa que /usr/bin/prj-pythonahora apunta a /usr/bin/bin/python. ¿Qué le gustaría que señalara exactamente?

janmoesen
fuente
No hay una barra diagonal inicial. el pwdes /home/xralf/my_virtual_envy tiene subdirectorio bincon pythoncomando
xralf
8
Entonces, te has olvidado $PWD/antes bin.
rvs
Gracias, esto ayudó. Usé este comando como estaba en el libro.
xralf
25

Cosas para verificar:

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

Si es así:

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

el archivo se buscará en / usr / bin / bin / python (eso es lo que xralf intentó decir). Fijar:

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

  • Si su bin/pythones un script de shell (también conocido como wrapper-script) verifique la línea #! - (a veces llamada shebang -line) en la primera línea. Si hay un error tipográfico como #!/bin/bushese también provocará un mensaje de error no encontrado .
ktf
fuente
gracias, tu respuesta es aún más cuidadosa y educativa. Lo siento, ya acepté.
xralf
esto ayudó mucho ... la mayoría de las respuestas si se encontraron fueron sobre $ PATH
Ja8zyjits
Yo uso un ln sin parámetro. La gente debería usar ln -s de hecho, creando así un enlace simbólico.
Cedric
Ayudé y usé ln -s $PWD/python /usr/bin/python-prj. $PWDse usa para obtener la ruta completa.
Manwal