![希望用户在退出 bash 脚本时从 shell 中注销](https://linux22.com/image/526421/%E5%B8%8C%E6%9C%9B%E7%94%A8%E6%88%B7%E5%9C%A8%E9%80%80%E5%87%BA%20bash%20%E8%84%9A%E6%9C%AC%E6%97%B6%E4%BB%8E%20shell%20%E4%B8%AD%E6%B3%A8%E9%94%80.png)
我希望当 Linux 用户退出 shell 脚本时,也能从 bash shell 中注销。这可能吗?
答案1
它不会正常启动脚本,exec
而是。这将替换登录 shell,因此当脚本完成时,用户将被注销。
答案2
用以下方式结束脚本kill -HUP $PPID
$PPID 是父进程的进程 ID。
答案3
根据您要完成的任务,您可以使用脚本名称而不是外壳在 /etc/passwd 中。
/etc/passwd 中的最后一项(最后一个冒号后面的所有内容)是壳在用户登录时运行。通过将其更改为脚本的名称,当脚本结束时,根据定义,shell 也会结束。
** 但是,编辑 /etc/passwd 时要非常小心,因为您可能会把自己锁在机器之外。显然,您可以使用
usermod --shell <script name> <user name>
这将是进行此更改的更安全的方法。
答案4
用杀死?
$ kill -HUP `ps -ef |grep $USER|grep bash|awk {'print $2'}`
编辑:正如评论中所说,它与 PPID 配合使用效果更好
$ kill -HUP $PPID