开发者

How to find the filename of a script being run when it is executed from a symlink on linux

If I have a python script that is executed via a symlink, is there a way that I can find the path to the script rather than the symlink? I've tried using the methods suggested in this question, but they always return the path to the symlink, not the script.

For example, when this is saved as my "/usr/home/philboltt/scripts/test.py" :

#!/usr/bin/python

import sys

print sys.argv[0]
print __file__

and I then create this symlink

ln -s /usr/home/philboltt/scripts/test.py /usr/home/philboltt/te开发者_运维知识库st

and execute the script using

/usr/home/philboltt/test

I get the following output:

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

Thanks! Phil


You want the os.path.realpath() function.


os.readlink() will resolve a symlink, and os.path.islink() will tell you if it's a symlink in the first place.


I believe you will need to check if the file is a symlink, and if so, get where it is linked to. For example...

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜