我使用system(“ source〜/ .bash_profile”)重新加载它,但是它不起作用。还有其他功能或代码可以在Linux中用C ++程序重新加载bash吗?
答案 0 :(得分:0)
如果您实际上是运行要影响的source ~/.bash_profile
shell的进程中的命令,则命令bash
有效。
启动C ++程序时,该程序是在不同进程中启动的,该进程是bash
进程的子进程,因此无法修改该bash
的环境过程。
实际上,它比更糟,因为C ++程序中的system()
调用几乎可以肯定会运行另一个进程来完成这项工作,所以已从bash
流程中删除两次。
事实上,甚至比更糟糕,因为source
是bash
内部命令,这意味着您必须启动{{1} } shell来执行它:-)
因此,最终的结果是以下过程层次结构,所有这些过程实际上只能影响其自身的环境,而不能影响其之上的任何事物:
bash