可执行符号链接导致“找不到命令”


24

我昨天创建了一个符号链接,如下所示:

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

当我跑步时:

prj-python file.py

我得到:

prj-python: command not found

当我尝试再次创建链接时,得到:

ln:创建符号链接`/ usr / bin / prj-python':文件存在

为什么会这样呢?我的$PATH是:

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

Answers:


21

您之前忘记了斜线bin/python。这意味着/usr/bin/prj-python现在指向/usr/bin/bin/python。您想确切指出什么?


没有初始斜杠。的pwd/home/xralf/my_virtual_env,它有子目录binpython命令
xralf

8
比起,你已经忘记了$PWD/之前bin
rvs

谢谢,这有所帮助。我使用了本书中的命令。
xralf 2011年

25

检查事项:

  • 执行 ls -l /usr/bin/prj-python

如果是这样的话:

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

实际上将在/ usr / bin / bin / python中搜索文件(这就是xralf试图说的)。固定:

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

  • 如果您bin/python是shell脚本(又称wrapper-script),请在第一行检查#!-行(有时称为shebang -line)。如果有这样的错字#!/bin/bush,也会导致未找到错误消息。

谢谢,您的回答更加谨慎和具有教育意义。对不起,我已经接受了。
xralf 2011年

很有帮助

我使用没有参数的ln。人们确实应该使用ln -s,从而创建符号链接。
Cedric

帮助了,我用了ln -s $PWD/python /usr/bin/python-prj$PWD用于获取完整路径。
曼沃尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.