簡體   English   中英

如何用C++程序重新加載Linux中的.bash_profile?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM