我正在尝试使用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
运行此脚本如何做到这一点?
答案 0 :(得分:4)
您应该将别名命令写入stdout。 (例如,只使用印刷品) 然后调用Python脚本的shell可以自己运行别名命令。
由@that其他人评论
eval "$(python yourscript.py)"
您.bashrc
中的应该