我想,当一个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终止。