【发布时间】:2016-03-16 18:27:09
【问题描述】:
我想知道如何从 python 获取你的 bashrc。我自动将脚本转换为别名等等。这是我在 shell 中看到的:
In [6]: subprocess.call(['sudo', 'source', '/home/cchilders/.bashrc'])
sudo: source: command not found
Out[6]: 1
In [7]: subprocess.call(['sudo', '.', '/home/cchilders/.bashrc'])
sudo: .: command not found
谢谢
【问题讨论】:
-
source是内置的 bash,因此您必须使用bash -c "source ..."。但是,这不会产生您正在寻找的效果,因为当 bash 进程结束时,shell 设置将会消失。 在启动python之前你需要这样做。 -
如果我调用一个仅来自 python 内部的 shell 脚本会怎样
-
这不会做你想要的......没有办法调用rc并让它在python shell或脚本中产生任何影响......你实际上想要完成什么?也许还有其他方法可以做到...
-
@codyc4321,记住这一点:子进程不能改变其父进程的环境。
-
您到底想达到什么目的?只是在子进程中运行一堆 shell 命令不会影响 Python 程序(或任何父进程)的状态。
标签: python bash scripting subprocess .bash-profile