0

大家好,我正在学习 python 脚本并尝试编写一些代码。

我在编辑“.bashrc”文件时发现了问题。编辑后.bashrc,我需要输入bashorsource .bashrcsource ~/.bashrc,然后我们在.bashrc文件中所做的任何更改都会生效。但是一旦我bash使用os.systemor subprocess,我将从当前的工作目录中出来并且 GUI 冻结(新会话开始),我将无法进行任何类型的操作,之后我还有很多工作要做。请建议我从中得出正确的指导

在 .bashrc 文件中,我想添加新行,然后它就是新的沙箱。如果我们不给“bash”命令它不会生效。Sabdbox 将只是旧的。

代码无论我尝试过什么:

   os.chdir("/home") 
   subprocess.call("sed -i 's/export SANDBOX=~\/xxxx/export SANDBOX=~\/yyyy/' .bashrc",shell=True)
   os.system("/bin/bash")
  #os.system("source ~./bashrc")
   os.system("/home/creart")

Afetr 最后两行密码是“/home 并且 gui 冻结。

4

1 回答 1

0

您的程序冻结,因为在没有要执行的命令的情况下,bash启动交互式会话并等待输入。无论如何,对 .bashrc 的更改只会影响新的交互式会话,因此只有从该更改之后启动的交互式会话启动的程序才会受到影响。

如果您想更改该“/home/creart”程序的环境变量,您只需在调用时修改环境变量,因为您提供的字符串os.system在“-c”选项之后传递给“/bin/sh”。像这样:

os.system("SANDBOX=~/yyyy/ /home/creart")

否则,如果您想更改 Python 脚本的环境变量,并且所有进程都使用保留环境(os.system保留环境)从它开始,只需修改os.environ映射对象。像这样:

os.environ["SANDBOX"] = "/home/user/yyyy"

请注意,~在这种情况下,它不会被主目录取代。

于 2013-05-27T06:14:59.127 回答