[英]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.