使用os.system()的Python'源HOME/.bashrc'

And*_*anu 8 python bash os.system

我正在编写一个python脚本(Linux),它正在添加一些shell别名(将它们写入HOME/.bash_aliases).

为了在编写后立即使用别名,我应该发出以下bash内置:

source HOME/.bashrc
Run Code Online (Sandbox Code Playgroud)

source 是一个内置的bash所以我不能只:

os.system(source HOME/.bashrc)
Run Code Online (Sandbox Code Playgroud)

如果我尝试类似的东西:

os.system('/bin/bash -c source HOME/.bashrc')
Run Code Online (Sandbox Code Playgroud)

...将冻结脚本(就像等待某事一样).

有什么建议 ?

Dae*_*yth 6

你想要的是不可能的.程序(您的脚本)无法修改调用者的环境(您运行它的shell).

另一种允许你做一些接近的方法是用bash函数编写它,它在同一个进程中运行并可以修改调用者.请注意,在运行时期间采购可能会产生负面的副作用,具体取决于用户在其bashrc中的含义.