Python 返回用于执行应用程序的别名
是否有办法回显用于运行脚本的别名而不是实际的.py名称 来自BashPython 返回用于执行应用程序的别名,python,bash,unix,Python,Bash,Unix,是否有办法回显用于运行脚本的别名而不是实际的.py名称 来自Bash user$alias TESTA='/home/user/script.py' user$TESTA arg1 arg2 sys.argv[0]返回/home/user/script.py 我正在寻找返回TESTA的内容?sys.argv返回传递给正在执行的脚本的参数列表。 sys.argv[0]将始终返回正在执行的脚本的路径。要访问arg1您将使用sys.argv[1]和访问arg2-sys.argv[2]您可能运气不好:
user$alias TESTA='/home/user/script.py'
user$TESTA arg1 arg2
sys.argv[0]返回/home/user/script.py
我正在寻找返回TESTA的内容?
sys.argv
返回传递给正在执行的脚本的参数列表。sys.argv[0]
将始终返回正在执行的脚本的路径。要访问arg1
您将使用sys.argv[1]
和访问arg2
-sys.argv[2]
您可能运气不好:别名是短暂的,shell会在调用进程之前替换它们
事实上,在Linux上,甚至/proc/$$/cmdline
都不再包含别名。您可以通过将以下代码保存为proc.py
来验证这一点:
#/usr/bin/env蟒蛇3
导入操作系统
以open(f'/proc/{os.getpid()}/cmdline',r')作为cmdline:
打印(cmdline.read().replace('\0','')
然后调用它,如下所示:
chmod+x proc.py
别名foo=proc.py
福
这项研究的成果将与
python3./x.py
…没有提到别名foo
如果希望能够使用不同的名称调用代码,请改用符号链接。以下工作:
ln-s proc.py foobar
/foobar
现在,您的“别名”(符号链接路径)可以作为
sys.argv[0]
访问,我认为python进程不会继承别名