O histórico de comandos não está ativado em scripts. Mesmo se você ativá-lo, o script não terá acesso ao histórico do shell interativo que o chamou.
Em vez de escrever um script, crie uma função e coloque-a no seu .bashrc
.
Além disso, em vez de executar o comando em uma instância separada do bash, você provavelmente deve usar o eval
builtin para executá-lo no mesmo contexto (as mesmas variáveis do shell em particular).
Sua abordagem com expansão de histórico funciona apenas para comandos simples; comandos contendo caracteres especiais resultarão em erros de sintaxe ou outro comportamento não intencional. Use o fc
incorporado para acessar o histórico programaticamente.
reexecute () {
eval "$(fc -l -1 | sed …)"
}