如果我进入我的 bash shell
touch $HOME/tmp
echo "last thing" >> $HOME/tmp
history -r $HOME/tmp
然后点击向上箭头,我看到“最后一件事”。
如果我将相同的行粘贴到脚本中并获取脚本,那么我会得到相同的结果。
但是,如果我这样做的话,这是行不通的
bash --init-file <(echo "history -r $HOME/tmp")
答案1
--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