如何在Linux中通过符号链接执行时找到脚本的文件名
如果我有一个通过符号链接(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()
这个函数。