Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 返回用于执行应用程序的别名_Python_Bash_Unix - Fatal编程技术网

Python 返回用于执行应用程序的别名

Python 返回用于执行应用程序的别名,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]您可能运气不好:

是否有办法回显用于运行脚本的别名而不是实际的.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]
您可能运气不好:别名是短暂的,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进程不会继承别名