大家好我正在学习python脚本并尝试编写一些代码。
当我编辑“.bashrc”文件时,我发现了问题。修改.bashrc
后,我需要输入bash
或source .bashrc
或source ~/.bashrc
,然后我们在.bashrc
文件中所做的任何更改都将生效。
但是一旦我使用bash
或os.system
进行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最后两行pwd是“/ home和gui冻结。
答案 0 :(得分:0)
您的程序冻结,因为在没有执行命令的情况下,bash
启动交互式会话并等待输入。无论如何,对.bashrc的更改只会影响新的交互式会话,因此只有在该更改之后启动的交互式会话启动的程序才会受到影响。
如果要更改“/ home / creart”程序的环境变量,只需在调用时修改环境变量,因为提供给os.system
的字符串将传递给“/ bin / sh” “之后”-c“选项。像这样:
os.system("SANDBOX=~/yyyy/ /home/creart")
否则,如果要更改Python脚本的环境变量,并且所有进程都使用保留的环境(os.system
保留环境)从中启动,则只需修改os.environ
映射对象。像这样:
os.environ["SANDBOX"] = "/home/user/yyyy"
请注意,在这种情况下,~
不会被主目录替换。