O histórico é por usuário, não global. Cada usuário possui seu próprio arquivo de histórico e os comandos de cada usuário são armazenados em seu próprio arquivo. O local padrão do arquivo de histórico do bash é $HOME/.bash_history
, portanto, será /home/user/.bash_history
para o usuário "usuário" e /root/.bash_history
para o usuário "raiz". Você pode alterar o nome / local do arquivo de histórico configurando a variável HISTFILE
environmental para outra coisa.
Agora, no exemplo que você mostra, você fez o seguinte:
-
Conectado como "usuário" e imediatamente mudou para root com
su
. Isso significa que você executou exatamente um comando como "usuário" e é por isso que o arquivo de histórico de "usuário" possui apenas uma entrada:su
. -
Como root, você executou vários comandos e todos foram armazenados no arquivo de histórico do root, já que eles eram executados pelo root. Observe que o arquivo de histórico do root não contém o comando
su
desde que foi executado por "usuário" e não por raiz.
Portanto, o arquivo $HOME/.bash_history
armazena todos comandos executados por um usuário, independentemente de em qual diretório eles foram executados. Entretanto, como cada usuário possui seu próprio arquivo, os comandos executados por root são não armazenados no mesmo arquivo que os executados pelo "usuário".