如何从python脚本中获取bashrc / bashprofile

时间:2015-12-10 23:08:18

标签: python bash scripting subprocess .bash-profile

我想知道如何从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

谢谢

3 个答案:

答案 0 :(得分:1)

sudo source无效,因为source是内置的shell。我不确定为什么你不能sudo source的技术原因,因为sudo echo工作正常,但尝试使用 subprocess.call(['.', '/home/cchilders/.bashrc'])或等同的任何内容。

答案 1 :(得分:1)

当你使用subprocess.call时,你没有使用shell - 来自:  https://docs.python.org/2/library/subprocess.html#subprocess.call

subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False)

subprocess.call的默认设置不是环境,因为你不在shell中。 Source是一个内置的bash,因此没有用于执行子进程的程序。可能你的bashrc中的大多数代码在子进程的上下文中调用都没有意义。

您可能想要做的是通过获取可以更加pythonic方式完成的bashrc文件来提供有关您要完成的内容的更详细信息。

答案 2 :(得分:0)

尝试以下操作:

import os

os.system("source /home/cchilders/.bashrc")

如果您想调用任何工具或运行任何其他脚本:

os.system("source /home/cchilders/.bashrc && python3 script name")