# 认识Shell

根据上一题的材料，核心是4个点：

* `终端`和`shell`是两个概念
* `终端` 负责交互
* `shell` 负责解析输入命令并传递给操作系统的程序，并把操作系统反馈信息输出

`shell` 源自Unix，一直发展到今天，已经有非常多不同的`shell`。如果你在`Unix/Linux`的终端下执行命令`cat /etc/shells`，就可以看到系统上安装的`shell`程序列表，例如：

```bash
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
```

重点介绍下：

* `sh`: 最初的UNIX shell程序，由Steve Bourne编写
* `bash`: 几乎所有的Linux/Mac都提供`bash`，`bash`是Bourne Again Shell的首字母缩写，是`sh`的增强版本
* `zsh`：有“终极Shell”之称，可直接使用各自平台的包管理工具安装，页面：[zsh](https://zsh.sourceforge.io/)
* `fish`: 也是一个常用的shell，可直接使用各自平台的包管理工具安装，页面：[fishshell](https://fishshell.com/)

根据上述材料，下列哪些说法是错误的

## 答案

```bash
在一个终端里执行命令序列：
* 输入 sh 回车
* 输入 bash 回车
* 输入 zsh 回车
* 输入 fish 回车
* 输入 exit 回车
* 输入 exit 回车

此时，当前终端停留在`bash`环境下
```

## 选项

### A

```bash
在一个终端里执行命令序列：
* 输入 sh 回车
* 输入 bash 回车
* 输入 zsh 回车
* 输入 exit 回车
* 输入 exit 回车

此时，当前终端停留在`bash`环境下

```

### B

Windows上安装WSL后，也可以在终端里使用对应Linux子系统的 shell 环境

### C

zsh和fishshell都有便利的命令自动完成功能，可以极大的提高效率

### D

在VSCode里按`` Ctrl+` ``可以进入终端环境，右上角的+按钮可以切换终端，每个终端可以使用不同的shell环境便于切换。
