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.
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?
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.
Termine seu script com kill -HUP $PPID
$ PPID é o ID do processo pai.
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.
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 .
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
É possível fazer isso se você incluir um EXIT no final do seu script, o que fará com que o shell bash termine.
Tags bash linux shell-scripting