【发布时间】:2014-02-11 00:37:07
【问题描述】:
我正在尝试使用 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)
问题是子进程在单独的 shell 会话中启动作业,因此程序运行良好,但对我运行它的 shell 会话没有任何作用。
python 的os.system 或尝试打印命令并将它们通过管道传输到 bash 时也会出现同样的问题(所有这些都会创建别名,但在程序完成后会立即销毁的新 shell 中)。
最终,这样做的目的是从 .bashrc 运行这个脚本
如何做到这一点?
【问题讨论】:
-
这似乎比在不涉及 Python 的情况下在
bash中定义别名要复杂得多。 -
@chepner 显然,如果这是最终的结果,那么 Python 将是不合适的。这样做的意义不仅在于动态生成这组特定的别名,而且还能够动态生成其他别名(例如将文件上传到服务器)。