如何从 python 脚本获取 bashrc/bashprofile
how to source bashrc/bashprofile from python script
我想知道如何从 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
谢谢
sudo source
不起作用,因为 source 是 shell 内置的。我不确定您不能 sudo source
的技术原因,因为 sudo echo
工作正常,但请尝试使用
subprocess.call(['.', '/home/cchilders/.bashrc'])
或任何等价物。
当您使用 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 中的大部分代码在子进程的上下文中调用是没有意义的。
您可能想要做的是提供更详细的信息,说明您试图通过采购 bashrc 文件来完成的工作,该文件可以用更 pythonic 的方式完成。
尝试以下操作:
import os
os.system("source /home/cchilders/.bashrc")
如果您想调用任何工具或运行任何其他脚本:
os.system("source /home/cchilders/.bashrc && python3 script name")
你可以用 subprocess.run
和一个子 shell 来做到这一点。
而不是这个:
subprocess.call(['sudo', 'source', '/home/cchilders/.bashrc'])
试试这个:
subprocess.run("sudo bash -c 'source /home/cchilders/.bashrc'", shell=True)
我想知道如何从 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
谢谢
sudo source
不起作用,因为 source 是 shell 内置的。我不确定您不能 sudo source
的技术原因,因为 sudo echo
工作正常,但请尝试使用
subprocess.call(['.', '/home/cchilders/.bashrc'])
或任何等价物。
当您使用 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 中的大部分代码在子进程的上下文中调用是没有意义的。
您可能想要做的是提供更详细的信息,说明您试图通过采购 bashrc 文件来完成的工作,该文件可以用更 pythonic 的方式完成。
尝试以下操作:
import os
os.system("source /home/cchilders/.bashrc")
如果您想调用任何工具或运行任何其他脚本:
os.system("source /home/cchilders/.bashrc && python3 script name")
你可以用 subprocess.run
和一个子 shell 来做到这一点。
而不是这个:
subprocess.call(['sudo', 'source', '/home/cchilders/.bashrc'])
试试这个:
subprocess.run("sudo bash -c 'source /home/cchilders/.bashrc'", shell=True)