如何在Linux中通过符号链接执行时找到脚本的文件名

4 投票
3 回答
1224 浏览
提问于 2025-04-15 21:03

如果我有一个通过符号链接(symlink)执行的Python脚本,有没有办法找到脚本的真实路径,而不是符号链接的路径?我试过在这个问题中建议的方法,但它们总是返回符号链接的路径,而不是脚本的路径。

举个例子,当这个脚本保存在我的“/usr/home/philboltt/scripts/test.py”路径下:

#!/usr/bin/python

import sys

print sys.argv[0]
print __file__

然后我创建了这个符号链接:

ln -s /usr/home/philboltt/scripts/test.py /usr/home/philboltt/test

接着我用以下方式执行这个脚本:

/usr/home/philboltt/test

我得到的输出是:

/usr/home/philboltt/test
/usr/home/philboltt/test

谢谢!

Phil

3 个回答

0

我觉得你需要检查一下这个文件是不是一个符号链接,如果是的话,就要找出它链接到哪里。例如……

try:
    print os.readlink(__file__)
except:
    print "File is not a symlink"
3

os.readlink() 这个函数可以用来解析一个符号链接,也就是我们常说的“快捷方式”。而 os.path.islink() 这个函数则可以告诉你,某个文件是不是一个符号链接。

8

你需要使用 os.path.realpath() 这个函数。

撰写回答