bash_logout e histórico

0

Eu gosto de salvar cada history no bash para um tipo de arquivo de log, e criei um diretório extra ~ / lib / hists / para esse propósito.

Escrever um arquivo de log no shell é fácil:

history -w /home/stefan/lib/hists/bash-hist-$(date +%F_%T_%N)

Agora, se eu desligar, todos os xterms de fechamento escreverão seu arquivo de log, que é, por que incluo o nanotime no nome do arquivo, para evitar colisão.

Então eu coloquei esse comando em ~ / .bash_logout

Infelizmente, fechar um xterm não gerou esse arquivo de log. Eu pensei, talvez porque seja porque fechei a janela. Então startet bash no bash:

bash
ls
exit

mas, novamente, não há história escrita.

Na maioria das vezes eu tenho 4 a 6 terminais abertos, mas apenas um arquivo de histórico para o qual eu não sei, quais comandos estão terminando lá - do primeiro shell aberto, do último shell fechado? Enquanto trabalhamos, os históricos não interferem, então acho que é apenas ligado a uma instância de shell.

Estou interessado em explicações, porque minha abordagem falha, como posso corrigi-la, incluindo abordagens muito diferentes.

    
por user unknown 14.02.2018 / 17:39

1 resposta

1

O Bash executará os comandos em .bash_logout apenas se o shell for um shell de login.

# .bash_logout will print "hi"
$ cat .bash_logout
echo hi

# Start a new shell that is not a login shell
$ bash
$ shopt login_shell
login_shell     off

# On exit, it will not print "hi"
$ exit
exit

# Start a login shell
$ bash -l
$ shopt login_shell
login_shell     on

# On exit it will execute .bash_logout, and will print "hi"
$ exit
logout
hi

Veja esta resposta em superuser.com para mais detalhes, juntamente com uma solução alternativa para o problema que você está tentando resolver .

    
por 14.02.2018 / 19:49