如何在编辑.bashrc文件后创建新会话

时间:2013-05-27 04:45:59

标签: python bash shell

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

当我编辑“.bashrc”文件时,我发现了问题。修改.bashrc后,我需要输入bashsource .bashrcsource ~/.bashrc,然后我们在.bashrc文件中所做的任何更改都将生效。  但是一旦我使用bashos.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冻结。

1 个答案:

答案 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"

请注意,在这种情况下,~不会被主目录替换。