history
é um comando interno do shell bash e sudo
não funciona com os recursos internos do shell.
O que é um comando interno e o que não é?
Eu usei o comando which
que "retorna os nomes de caminho dos arquivos (ou links) que seriam executados no ambiente" para confirmar que history
não foi um comando externo (para bash).
Por exemplo, executando
$ which history
$
não retorna nada e o código de saída é 1 (um ou mais comandos especificados são inexistentes ou não executáveis) [Para ver o código de saída com echo $?
], durante a execução
$ which ls
/bin/ls
$
e o código de saída 0 (todos os comandos especificados são encontrados e executáveis).
Além disso, no bash você pode procurar ajuda para comandos incorporados com help
(ou pesquisando a página man bash
). Por exemplo, digitando
$ help history
history: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps
arg [arg...]
Display or manipulate the history list.
...
mostra informações de ajuda do bash. A execução de help non-bash-command
retorna algo semelhante a este:
$ help ls
bash: help: no help topics match 'ls'. Try 'help help' or 'man -k ls' or
'info ls'.
e o código de saída 1
Então, o que o sudo vem fazendo?
Você pode pesquisar seu próprio histórico para os comandos sudo
que seu usuário executou (e não pulou para salvá-lo no histórico) com grep '^sudo' .bash_history
ou history|less
ou similar.
Ou, no Ubuntu o arquivo /var/log/auth.log
mantém registros de qual sudo
vem fazendo para todos os usuários, procura por "sudo" lá (outras distros podem usar o arquivo /var/log/secure
), ou poderia usar
sudo grep sudo /var/log/auth.log
ou execute sudo journalctl _COMM=sudo
se você tiver systemd.
Veja a pergunta "Detalhes sobre comandos do sudo executados por todos usuário "no Unix & Linux para mais detalhes