今天偶尔想到了exit与logout两个命令,在使用的时候突然发现好像这两者没有什么区别,网上一般的提法都是说logout表示注销用户;而exit 表示退出控制台,虽然在描述的时候好像是有区别,但当在命令行里执行这两个命令时,发现都是退出了控制台,并没有感受到什么差异。还看到网上有这么一个描述:退出系统我们可以选择exit或者logout,那么这两者之间有区别么?大部分系统来说这两者之间是没有区别的,但是他们两者还是有一点点的区别的:logout退出时会执行~/.bash_logout(如果有的话),而exit只会作退出工作而不执行~/.bash_logout。除此之外别无其他区别。但是亲自测试,不管是执行exit还是执行logout都会去调用.bash_logout的内容。如下:本文地址:http://www.04007.cn/article/621.html,未经许可,不得转载.
[dev@user ~]$ cat .bash_logout # ~/.bash_logout echo "goodbye onlinedev." [dev@user ~]$ exit logout goodbye onlinedev. Connection to 182.118.10.6 closed. Session closed, press ENTER to start, l to last session or q to exit. [dev@user ~]$ logout goodbye onlinedev. Connection to 182.118.10.6 closed. Session closed, press ENTER to start, l to last session or q to exit.那两到底有什么区别呢?我个人尝试总结一下:本文地址:http://www.04007.cn/article/621.html,未经许可,不得转载.
1,从上面的执行过程可以看到,每次执行exit后面都跟着执行了一次logout,可以认为在命令行下执行的exit就是先进行了一些任务结束,最后执行logout,基本和logout没有什么差别。本文地址:http://www.04007.cn/article/621.html,未经许可,不得转载.
2,logout只能在命令行中执行,而exit可以在shell脚本中执行。而且在shell脚本中执行exit并不会退出控制台,只是终止当前脚本执行,如下代码:本文地址:http://www.04007.cn/article/621.html,未经许可,不得转载.
[root@123 ~]# cat test.sh #!/bin/bash logout #执行的时候提示没有这个shell,需要使用exit [root@123 ~]# ./test.sh ./test.sh: line 2: logout: not login shell: use `exit' [root@123 ~]# cat test.sh #!/bin/bash exit #执行结束,在终端上看是没有什么直接返回。 [root@123 ~]# ./test.sh [root@123 ~]#3,exit在shell脚本中执行时还可以带参数,使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。此参数可在shell执行后通过$?获取本文地址:http://www.04007.cn/article/621.html,未经许可,不得转载.
[root@123 ~]# ./test.sh [root@123 ~]# echo $? 0 [root@123 ~]# cat test.sh #!/bin/bash exit 99 [root@123 ~]# ./test.sh [root@123 ~]# echo $? 99综上:logout是专门用于命令行中退出当前登录的Shell命令,exit也具有logout的功能,但exit同时还能用于退出执行的shell脚本,并通过设置参数返回给调用shell的程序本身,这个可以方便协同跨程序间的调用。本文地址:http://www.04007.cn/article/621.html,未经许可,不得转载.
本文地址:http://www.04007.cn/article/621.html 未经许可,不得转载. 手机访问本页请扫描右下方二维码.
![]() |
![]() |
手机扫码直接打开本页面 |