deseja que o usuário efetue logout do shell na saída do script bash

1

Eu quero, quando um usuário linux sai de um script de shell, que ele também efetue logout do shell bash. Isso é possível?

    
por Lucas Kauffman 06.10.2010 / 15:11

6 respostas

4

Em vez de iniciar o script normalmente, exec em vez disso. Isso substituirá o shell de login, portanto, quando o script for concluído, o usuário será desconectado.

    
por 06.10.2010 / 16:48
4

Termine seu script com kill -HUP $PPID

$ PPID é o ID do processo pai.

    
por 06.10.2010 / 15:39
1

Dependendo do que você está tentando realizar, você pode usar o nome do script em vez do shell em / etc / passwd.

A última entrada em / etc / passwd (após os últimos dois pontos) é o shell que é executado quando o usuário faz o logon. Ao alterar isso para o nome do seu script, quando o script termina, então, por definição, o shell também funciona.

** Tenha muito cuidado ao editar o arquivo / etc / passwd, já que você pode se desligar da sua máquina. Aparentemente você pode fazer isso com

usermod --shell <script name> <user name>

qual seria a maneira mais segura de fazer essa mudança.

    
por 06.10.2010 / 16:45
1

Outra abordagem pode ser source do script em vez de chamá-lo diretamente, uma instrução exit no script fechará o shell do usuário:

$ cat exit_me.sh
#!/bin/bash
exit

e

$ source exit_me.sh
# or
$ . exit_me.sh

Mais informações sobre source aqui .

    
por 27.07.2017 / 23:35
0

com matar?

$ kill -HUP 'ps -ef |grep $USER|grep bash|awk {'print $2'}'

Editar: como dito nos comentários, funciona melhor com o PPID

$ kill -HUP $PPID
    
por 06.10.2010 / 15:30
-3

É possível fazer isso se você incluir um EXIT no final do seu script, o que fará com que o shell bash termine.

    
por 06.10.2010 / 15:23