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)
...将冻结脚本(就像等待某事一样).
有什么建议 ?
你想要的是不可能的.程序(您的脚本)无法修改调用者的环境(您运行它的shell).
另一种允许你做一些接近的方法是用bash函数编写它,它在同一个进程中运行并可以修改调用者.请注意,在运行时期间采购可能会产生负面的副作用,具体取决于用户在其bashrc中的含义.