脚本中的历史扩展

脚本中的历史扩展

我有以下 Bash 脚本

case $- in (*H*) echo enabled ;; (*) echo disabled ;; esac
set -H
case $- in (*H*) echo enabled ;; (*) echo disabled ;; esac
pwd
last_command="!!"
echo $last_command

打印

disabled
enabled
/home/user
!!

第一行代码检查是否启用了历史扩展。第二个可以扩展历史。第三个与第一个相同。然后它运行pwd并最终分配最后一个命令last_command并打印该变量。

历史并没有扩大。到底是怎么回事?

答案1

对于非交互式 shell,您必须专门启用命令历史记录:

set -o history
set -o histexpand

然后你的例子就会起作用:

disabled
enabled
/home/schaller/tmp/502442
last_command="pwd"
pwd

相关内容