shell 是一种命令行的解释器,也就是 shell 会把用户输入的命令,转换成操作系统能够理解的操作。不同的操作系统可能会使用不同的 shell,比如 macOS 系统目前用的是 zsh,也就是 z shell,跟它类似的还有 bash 或者 sh。
在 macOS 系统里,可以在 WRAP 或者系统自带的终端里面,执行 echo $SHELL 这行命令,查看系统正在使用的 shell。
```
echo $SHELL
```
输出的结果是 /bin/zsh,表示在我的系统里,正在使用的就是 zsh 这种 shell。这里我们执行的是 echo 命令,后面的 $SHELL 是一个在系统里的环境变量的名字,这行命令的意思就是输出 $SHELL 这个环境变量的值。
**配置文件**
确定了系统当前使用 shell 以后,我们也就知道了影响它的配置文件,一个是在用户主目录下的 .zshrc,zsh 指的是 z shell,rc 指的是 run command。除了这个配置文件,.zprofile 也是常用的配置文件,z 表示 z shell,profile 有用户配置的意思。
这两个配置文件执行的时机不太一样,.zshrc 会在每次启动一个新的 zsh shell 的时候都会被执行,.zprofile 会在用户登录系统的时候执行一次。除此以外,大部分配置都可以放在任意一个配置文件里,有时候在安装了一些软件以后,软件可能会自动修改这两个配置文件,比如在里面添加一些需要的环境变量。
这两个配置文件的位置是在当前登录的用户的主目录下面,使用代码编辑器可以编辑 zsh 配置文件里的内容。比如安装了 vscode 编辑器以后,在终端可以执行 code 这个命令,执行 code ~/.zshrc,意思就是编辑用户主目录下的 .zshrc 这个文件。如果你发现无法执行 code 命令,我们也可以使用 vi 这个命令行编辑器编辑文本文件。
```
vi ~/.zshrc
```
用 vi 这个命令行编辑器打开要编辑的文件以后,按一下小 i 进入编辑器的编辑模式,这样就可以修改这个文件里的内容了。在这个配置文件里添加一行配置,echo "你好,鲲浪~" ,意思就是输出一行文字,编辑完成以后按 esc 退出编辑模式,然后输入 :wq ,回车执行一下,意思是保存并退出文件。
按一下 command + T,新建一个标签,你会看到在终端这里会输出一行文字 “你好,鲲浪”。说明执行了 .zshrc 这个配置文件里的内容。
**提示符**
如果想配置这个命令提示符,可以在配置文件里设置一下 PS1 这个环境变量的值,执行 vi ~/.zshrc,编辑一下这个文件,按一下小 i 进入编辑模式,在文件里面设置一下 PS1 这个环境变量的值,等号右边是给它的值,一组引号,里面的值就是提示符文本,可以使用一些特殊的符号表示特定的东西,当前用户名,主机名,当前工作目录,都有对应的表示的符号,比如表示当前工作目录的符号是 %~,按 esc 退出编辑,再输入 :wq 保存一下文件。
关掉终端,重新再打开它,现在这个提示符就只会显示当前所在的工作目录的位置了。再编辑一下 .zshrc 这个配置文件,改一下 PS1 这个环境变量的内容,改成一个独角兽表情符号,保存一下文件,重新打开 Warp,现在提示符就只会显示一个独角兽的表情符号了。🦄
![[Pasted image 20231120100502.png]]
**命令别名**
命令别名可以简化输入常用的命令,用 vi 编辑一下 ~/.zshrc 这个配置文件,按小 i 编辑当前打开的文件,设置命令别名可以使用 alias,后面是命令别名的名字,比如 la,等号右边是这个命令别名对应的要执行的具体的命令,比如 ls -la。这样如果在终端执行 la 这个命令,实际上执行的就是 ls -la 这行命令,也就是执行的 ls 这个命令,外加两个选项,一个是 l 选项,一个是 a 选项。
*/Users/wanghao/.zshrc*
```shellscript
alias la="ls -la"
```
保存一下配置文件,然后重新再打开终端工具。输入 la,Warp 终端会提示这是一个命令别名,实际的命令是 ls -la。回车执行一下,得到的结果就是执行 ls 加上 l 还有 a 选项得到的结果。
![[Pasted image 20231120150832.png]]
我们可以继续在 .zshrc 或者 .zprofile 文件里定义需要的命令别名。