executa o script ao fechar o terminal

3

Eu quero executar um script sh específico ao fechar um terminal.

Eu editei o arquivo .bash-logout , adicionei esta linha de código dentro da instrução if

[ -x /home/user/Documents/logout_msg.sh ] && /home/user/Documents/logout_msg

Eu fiz logout_msg.sh executável, e também fora da declaração if Eu adicionei a mensagem básica de eco com o comando sleep depois, mas isso não está aparecendo ao fechar o terminal.

Qual pode ser o problema?

    
por Viktor Sokolov 04.04.2018 / 17:34

1 resposta

4

O arquivo ~/bash_logout é somente originado quando você sai do shell de login (de man bash ):

When an interactive login shell exits, or a non-interactive login shell executes the exit builtin command, bash reads and executes commands from the file ~/.bash_logout, if it exists.

Quando você abre um terminal, está executando um shell interativo de não-login, portanto, ~/bash_logout não é relevante. Para mais informações sobre os diferentes tipos de shell, veja minha resposta aqui .

Para que algo seja executado toda vez que você fechar o terminal, você pode usar trap para definir um comando para ser executado toda vez que uma sessão bash interativa sair. Para fazer isso, adicione esta linha ao seu ~/.bashrc :

trap /home/user/Documents/logout_msg.sh EXIT 

É claro que, se esse script estiver imprimindo uma mensagem para o terminal, você precisará certificar-se de que seu logout_msg.sh inclua um comando sleep para que o usuário tenha tempo de ler a mensagem. Algo como:

echo "Whatever message you want"
sleep 10 ## wait for 10 seconds
    
por terdon 04.04.2018 / 17:46