V režimu gui, když má uživatel otevřených více než jeden terminál, jak terminály přepíší soubor historie tohoto uživatele? důvod, proč se ptám, je ten, že je docela možné, že v každém z terminálů uživatel skončí s prováděním různých příkazů. Takže skončí soubor historie uložením příkazů ze všech terminálů nebo pouze z toho prvního, který se má otevřít? Nebo existuje nějaký jiný druh schématu, který se používá k řešení této situace?
Přijatá odpověď:
Zcela záleží na tom, jak se s tím shell rozhodne zacházet
bash
ve výchozím nastavení přepíše soubor historie místní historií každého shellu při jeho ukončení, takže vyhrává poslední shell, který skončil. histappend
volba způsobí, že se místo toho připojí k hlavní historii (shopt -s histappend
).
zsh
dělá totéž ve výchozím nastavení a má několik možností, jak se s tím vypořádat:
appendhistory
— Historie každého shellu je připojena k hlavnímu souboru historie při ukončení shelluincappendhistory
— Soubor hlavní historie se aktualizuje pokaždé, když je spuštěn řádek v libovolném prostředí, místo čekání na ukončení tohoto prostředísharehistory
— Jakoincappendhistory
, ale také přenáší změny z hlavního souboru historie do všech spuštěných shellů, takže můžete spustit příkaz v jednom shellu a poté stisknout Nahoru v jiné skořápce a uvidíte to