我正在尝试使用 python 动态创建 bash 别名(例如,用于登录一组服务器的别名)。 我很想能够做这样的事情:
from subprocess import call
SERVERS = [
("example", "[email protected]"),
#more servers in list
]
for server in SERVERS:
call('alias %s="ssh %s"' % (server[0], server[1]), shell=True)
问题是子进程在单独的 shell 会话中启动作业,因此程序运行良好,但对我运行它的 shell 会话没有任何作用。
同样的问题也发生在 python 的
os.system
或尝试打印命令并将它们通过管道传输到 bash 时(所有这些都会创建别名,但在一个新的 shell 中,该 shell 在程序完成后立即被销毁)。
最终的目标是从 .bashrc 运行此脚本
如何做到这一点?
您应该将别名命令写入标准输出。 (例如,仅使用打印)。
然后调用 Python 脚本的 shell 可以自行运行别名命令。
正如@thatotherguy 评论的那样
eval "$(python yourscript.py)"
在你的
.bashrc
应该这样做