我想知道如何从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
谢谢
答案 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")