[英]How to reload .bash_profile in Linux with C++ program?
我使用 system("source ~/.bash_profile") 重新加载它,但它不起作用。 linux中是否还有其他function或代码用C++程序重新加载bash?
如果您实际上正在运行要影响的bash
shell,则命令source ~/.bash_profile
有效。
当您启动 C++ 程序时,该程序在另一个进程中启动,它是bash
进程的子进程,因此无法修改该bash
进程的环境。
而且,事实上,它甚至比这更糟糕,因为 C++ 程序中的system()
调用几乎肯定会运行另一个进程来完成这项工作,因此它两次从bash
进程中删除。
而且,事实上,它甚至比这更糟糕,因为source
是一个bash
内部命令,这意味着你必须启动一个bash
shell 来执行它:-)
因此,您最终得到的是以下流程层次结构,所有这些实际上只能影响它们自己的环境,而不会影响它们之上的任何东西:
original-bash
|
C++-program
|
bash-run-by-system
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.