shell 可以嵌套:图形终端会启动 shell,SSH 连接会启动远程 shell,而 shell 又可以启动另一个 shell。离开当前 shell 后,控制权通常会返回给启动它的对象。
命令行 · 第 19 课
exit 命令
学习离开当前 shell,并选择它返回给调用者的状态。
离开当前 shell
结束 shell 会话最常用的方法是使用 exit 命令。当你输入 exit 并按回车时,当前的 shell 进程将终止。这个命令几乎适用于任何 shell 环境。
$ exit
如果该 shell 是图形终端标签页中的主进程,标签页可能会按终端设置关闭。在 SSH 会话中,离开远程 shell 通常会返回本地 shell。如果启动了嵌套 shell,exit 会返回其父 shell。
你在另一个 shell 内启动了 Bash,现在想返回父 shell。应在嵌套 Bash 会话中运行哪个命令?
返回退出状态
exit 命令还可以返回一个状态码。状态码为 0 通常表示成功,非零状态码通常表示错误或特殊情况。
$ exit 0
按约定,0 表示成功,非零值表示失败或程序定义的其他情况。如果 Bash 没有收到数字参数,它会使用运行 exit 前最后一条命令的状态退出。
哪个命令会终止当前 shell,并明确向调用者报告成功?
在 Bash 中,不提供数字时,exit 会返回什么状态?
在登录 shell 中使用 logout
Bash 的 logout 内建命令用于退出登录 shell:
$ logout
在非登录 Bash shell 中,logout 会报告它不是登录 shell;此时应使用 exit。
哪个 Bash 内建命令专门用于离开登录 shell?
使用 Ctrl+D 或关闭终端
在空的交互式提示符下按 Ctrl+D,通常会提供终端的文件结束输入字符。Bash 一般把这种情况解释为退出请求。它不是信号,而且 Bash 的 ignoreeof 等 shell 设置可以改变这一行为。
关闭图形终端窗口会要求终端应用关闭其中的进程,也可能影响正在运行的任务。条件允许时应优先有序执行 exit,关闭会话前先检查是否还有活动工作。
课程已完成
你已完成 exit 命令
现在,你可以离开当前 shell,并传达它的完成状态。
使用
exit返回当前 shell 的调用者。用
0表示成功,或按定义使用非零状态。理解不带参数的
exit使用什么状态。只在登录 shell 中使用
logout。知道
Ctrl+D表示文件结束输入,而不是信号。