要用户在bash脚本的出口退出shell

我想,当一个Linux用户从一个shell脚本退出时,它也从bash shell注销。 这可能吗?

而不是通常启动脚本,而是exec它。 这将取代loginshell,所以当脚本完成后,用户将被注销。

kill -HUP $PPID结束脚本

$ PPID是父进程的进程ID。

根据您要完成的工作,您可以使用脚本名称而不是 / etc / passwd 中的shell

/ etc / passwd中的最后一项(最后一个冒号后的所有内容)是用户login时运行的shell 。 通过将其更改为脚本的名称,当脚本结束时,按照定义,shell也一样。

**但是要非常小心地编辑/ etc / passwd,因为你可以把自己锁在机器外面。 显然你可以这样做

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

这将是更安全的做法。

另一种方法可能是脚本source而不是直接调用脚本,脚本中的exit语句将closures用户shell:

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

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

更多关于source信息

杀人?

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

编辑:如在评论中所说,它与PPID更好地工作

 $ kill -HUP $PPID 

如果在脚本的末尾包含一个EXIT,就可以做到这一点,该脚本告诉bash shell终止。