2015-04-24 41 views
3

我已經執行以下的shell命令如何訪問其他shell的情況下一個上下文的shell變量

sw0:root> pwd 
/root 
sw0:root> echo $(history 1) 
2 echo $(history 1) 
sw0:root> 

現在我打電話交流文件系統的系統調用,如下圖所示

system (" echo \"___history1 = $(history 1)____\""); 

輸出:

___history1 = ____ 

我試過的是我嘗試從C使用讀取最後一個shell的歷史命令系統調用。

請澄清以下疑點

  1. 爲什麼我無法讀取C文件在shell中執行一條歷史命令?

  2. 是因爲當我打電話給系統系統調用時,它分出一個新的shell?

  3. 如果是這樣,我該如何做到這一點?從其他地方讀取1個shell的命令輸出?

回答

0

當您運行程序時,它運行在一個子shell中,並且不會繼承調用shell的歷史記錄。

您可以將此與運行bash -c history進行比較,您將得不到結果。

+0

戈捷,所以是有反正我能做到這一點? – user3446120

0

您打開shell:1現在執行一些命令。 現在關閉該shell。

打開新shell2後並使用system()命令將有executated命令的信息中抽殼


,直到您關閉當前的shell,它的歷史是不是在全球歷史文件刷新。

是系統會打開自己的上下文。


OP:ⅰ執行從的 系統在啓動運行在主殼此命令,所以是有什麼辦法可以手動刷新它?

對於您需要在您的.bashrc文件中加入這一行

export PROMPT_COMMAND='history -a' 

見:http://www.aloop.org/2012/01/19/flush-commands-to-bash-history-immediately/

+0

先生,我在從系統啓動運行的主外殼上執行此命令,所以有什麼辦法可以手動清除它? – user3446120

+0

@ user3446120更新了我對該問題的回答 –

+0

@ user3446120確實有效嗎? –

相關問題