O link simbólico executável resulta em "comando não encontrado"

24

Eu criei um link simbólico (ontem) assim:

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

Quando eu corro:

prj-python file.py

Eu recebo:

prj-python: command not found

Quando tento criar o link novamente, recebo:

ln: criando o link simbólico `/ usr / bin / prj-python ': o arquivo existe

Por que isso está acontecendo? Meu $PATHé:

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

xralf
fonte

Respostas:

21

Você esqueceu a barra inicial antes bin/python. Isso significa /usr/bin/prj-pythonagora aponta para /usr/bin/bin/python. O que você gostaria que ele apontasse exatamente?

janmoesen
fonte
Não há barra inicial. o pwdé /home/xralf/my_virtual_enve tem subdiretório bincom pythoncomando
xralf
8
Então, você esqueceu $PWD/antes bin.
RVS
Obrigado, isso ajudou. Eu usei esse comando como estava no livro.
Xralf #
25

Coisas a verificar:

  • Realize um ls -l /usr/bin/prj-python

Se é assim:

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

O arquivo será pesquisado em / usr / bin / bin / python (é o que o xralf tentou dizer). Consertar:

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

  • Se você bin/pythoné um shell script (também conhecido como wrapper-script), verifique a linha #! - (às vezes chamada shebang -line) na primeira linha. Se houver um erro de digitação, #!/bin/bushisso também causará uma mensagem de erro não encontrada .
ktf
fonte
obrigado, sua resposta é ainda mais cuidadosa e educativa. Desculpe, eu já aceitei.
xralf
isso ajudou muito ... a maioria das respostas se encontraram foram cerca de US $ PATH
Ja8zyjits
Eu uso um ln sem um parâmetro. As pessoas devem usar ln -s de fato, criando assim um link simbólico.
Cedric
Ajudou, e eu usei ln -s $PWD/python /usr/bin/python-prj. $PWDé usado para obter o caminho completo.
Manwal