Bash:无法访问函数或脚本中的历史记录

时间:2014-09-28 20:34:32

标签: bash

想象一下这种情况:

 $ c3
 I'm c3 command. Done.
 $ c4
 I'm c4 command. Everything is alright here.
 $ c5
 I'm c5 command. You have a problem, I give up the task!
 $ history 5
 11 c1
 12 c2
 13 c3
 14 c4
 15 c5

我们可以通过执行来重复命令c3!13,输出为:

 $ !13
  c3
     I'm c3 command. Done.

我尝试在我的.bashrc中使用!运算符(在函数中),但它不起作用。我还试图制作一个shell脚本来使用它而没有成功。有没有办法做到这一点?

尝试不起作用:

 # inside .bashrc or .bash_functions
 function histtest()
 {
     echo 'history #13'
     ta="you're missing something..."

     # uncomment **one** of these two lines at a time
     ta="!13"
     # ta=!13    

     echo $ta
 } 

t.sh文件:

 #!/bin/bash

 test=!13
 #test="!13"
 #test='!13'     # of course not

 echo "$test"

1 个答案:

答案 0 :(得分:2)

来自bash(1)手册页:

  

历史扩张

     

shell支持历史记录扩展功能,类似于csh中的历史记录扩展。对于交互式shell,此功能默认启用,可以使用set builtin命令的+ H选项禁用此功能。默认情况下,非交互式shell不会执行历史记录扩展。

我不建议在shell脚本中启用历史记录扩展。你可以用set -H来做,但是说真的,不要这样做。它实际上只应该以交互方式使用。