在 --init-file 中设置 `history -r`

在 --init-file 中设置 `history -r`

如果我进入我的 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

相关内容