python - 返回用于执行应用程序的别名
问题描述
有没有办法回显用于运行脚本的别名而不是实际的 .py 名称?
从重击
user$alias TESTA='/home/user/script.py'
user$TESTA arg1 arg2
sys.argv[0] 返回 /home/user/script.py 我正在寻找返回 TESTA 的东西?
解决方案
你可能不走运:别名是短暂的,shell在调用进程之前替换它们。
事实上,在 Linux 上,甚至/proc/$$/cmdline
不再包含别名。您可以通过将以下代码保存为来验证这一点proc.py
:
#!/usr/bin/env python3
import os
with open(f'/proc/{os.getpid()}/cmdline', 'r') as cmdline:
print(cmdline.read().replace('\0', ' '))
然后按如下方式调用它:
chmod +x proc.py
alias foo=proc.py
foo
其输出将类似于以下内容
python3 ./x.py
......没有提到别名foo
。
如果您希望能够使用不同的名称调用您的代码,请改用符号链接。以下作品:
ln -s proc.py foobar
./foobar
现在您的“别名”(符号链接路径)将可以作为sys.argv[0]
.
推荐阅读
- html - MDN 指南中的简单@font-face 不起作用
- quickfix - c# (Quickfixn) 中不正确的 BeginString (FIX.4.4)
- chart.js - Chart.js 插件数据标签 - 格式化程序 - 在数千之间添加空格
- laravel - Laravel 属于混乱
- asp.net-mvc - 登录后重新访问索引页面
- macos - 上传到苹果后错误:ITMS-90284:无效的代码签名
- java - Java 接口继承自其他两个接口 - 是否可以通过使用 Java 反射删除有关其中一个接口的信息?
- java - 如何在我的 CentOS7 64 位系统上安装 OpenJDK7 32 位(JDK,而不仅仅是 JRE)?
- python - python pydeck to_html不渲染地图
- java - 事务方法不回滚未经检查的异常