Por que o '!!' atalho falha ao executar o comando executado anteriormente?

14

Recentemente eu digitei no meu terminal

username:~$ !!

e recebeu um erro de bash :

bash: !!: command not found

Ao mesmo tempo, é bem sucedido quando feito sob superusuário.

Eu investiguei o conteúdo do PATH do meu usuário e não achei nada suspeito:

/home/username/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Aqui está a saída de:

username:~$ history | tail
1993  date
1994  cal
1995  vcal
1996  uptime
1997  uname
1998  uptime
1999  uname
2000  uptime
2001  uname
2002  history | tail

Outro:

username:~$ echo foo
foo
username:~$ !!
bash: !!: command not found
    
por Bulat M. 19.11.2016 / 12:08

1 resposta

23

A expansão do histórico pode estar desativada:

$ echo foo
foo
$ !!
echo foo
foo
$ set +o histexpand
$ set -o | grep hist
histexpand      off
history         on
$ echo foo
foo
$ !!
bash: !!: command not found

Experimente set -H ou set -o histexpand .

    
por muru 19.11.2016 / 13:05