脚本中的'history -s'不起作用

时间:2011-11-14 00:36:22

标签: bash

我对linux比较陌生,并且疯狂地试图利用bash,最终zsh。无论如何,目前这让我感到难过:

#!/bin/bash
history -s "a_string"

....不起作用。我已经尝试了十几种不同的想法,但没有任何削减它。 有任何想法吗?

2 个答案:

答案 0 :(得分:2)

子shell不是交互式的,因此不保存历史父shell不会重新加载历史记录。

解决此问题的典型方法:

  1. 使用别名而不是脚本

       alias doit='history -s "a_string"'  
       unalias doit
    
  2. 使用shell函数而不是脚本

       function doit() { 
            echo "A function is a lot like a script"
            history -s "but operates in a subshell only when a bash command does (piping)" 
       }
       unset doit
    
  3. source脚本,而不是在子shell中执行

    source ./myscript.sh
    . ./myscript.sh   # equivalent shorthand for source
    

答案 1 :(得分:1)

运行这样的脚本时,未设置

$HISTFILE$HISTFILESIZE。设置$HISTFILE后,您可以根据需要阅读和编写历史记录。