使用python动态创建bash别名

问题描述 投票:0回答:1

我正在尝试使用 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 bash dynamic alias
1个回答
7
投票

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

正如@thatotherguy 评论的那样

eval "$(python yourscript.py)"

在你的

.bashrc
应该这样做

© www.soinside.com 2019 - 2024. All rights reserved.