Bash

在 –init-file 中設置history -r

  • March 12, 2017

如果我進入我的 bash shell

touch $HOME/tmp
echo "last thing" >> $HOME/tmp
history -r $HOME/tmp

然後按向上箭頭,我看到“最後一件事”。

如果我在腳本中粘貼相同的行並獲取腳本,那麼我會得到同樣的結果。

但是,如果我這樣做,它將不起作用

bash --init-file <(echo "history -r $HOME/tmp")

--init-file首先處理,然後${HISTFILE:-$HOME/.bash_history}正常載入的內容。如果該文件包含$HISTSIZE條目(通常是這種情況),則載入的條目將history -r tmp被推離歷史列表的開頭並失去。

以下變體對我有用(在 CentOS 上的 4.1.2 中):

bash --init-file <(echo history -r temp; echo HISTFILE=/dev/null)
# in new shell history contains only the line(s) from temp

bash --init-file <(echo history -r temp; echo let HISTSIZE+=100)
# in new shell history contains the line(s) from temp THEN .bash_history

引用自:https://unix.stackexchange.com/questions/350851