使用python动态创建bash别名

Zag*_*ags 3 python bash alias dynamic

我正在尝试使用 python 动态创建 bash 别名(例如,登录到一组服务器的别名)。我希望能够做这样的事情:

from subprocess import call
SERVERS = [
    ("example", "user@example.com"),
    #more servers in list
]    

for server in SERVERS:
    call('alias %s="ssh %s"' % (server[0], server[1]), shell=True)
Run Code Online (Sandbox Code Playgroud)

问题是子进程在单独的 shell 会话中启动作业,所以程序运行良好,但对我运行它的 shell 会话没有任何影响。

pythonos.system或尝试打印命令并将它们通过管道传送到 bash时也会出现同样的问题(所有这些都会创建别名,但在程序完成后立即销毁的新 shell 中)。

最终,这个目标是从 .bashrc 运行这个脚本

如何做到这一点?

Joh*_*ooy 5

您应该将别名命令写入标准输出。(例如,只使用打印)。
然后调用 Python 脚本的 shell 可以自己运行别名命令。

正如@that other guy 所评论的那样

eval "$(python yourscript.py)"
Run Code Online (Sandbox Code Playgroud)

在你.bashrc应该做的