MAC系统zsh及环境变量简介
Zsh简介
从 macOS Catalina 开始,Mac 使用 zsh 作为默认登录 Shell 和交互式 Shell。默认情况下,Mac 使用 zsh 或 bash 作为登录 Shell 和交互式 Shell 的命令行解释器:
- 从 macOS Catalina 开始,zsh (Z shell) 是所有新建用户帐户的默认 Shell。
- bash 是 macOS Mojave 及更早版本中的默认 Shell。
zsh 与 Bourne Shell (sh) 高度兼容,并且与 bash 基本兼容(存在一些差别)。要进一步了解 zsh 及其全面的命令行完成系统,请在“终端”中输入:
man zsh
总的来说,Zsh是一个UNIX命令解释器(shell),可以作为交互式登录shell和shell脚本命令处理器使用。在标准shell中,zsh最类似于ksh,但包含许多增强功能。Zsh具有命令行编辑、内置拼写纠正、可编程命令补全、shell功能(具有自动加载)、历史机制和许多其他功能。
环境变量
shell 使用环境变量储存信息,例如当前用户的名称、主机名称以及任何命令的默认路径。在 shell 上下文中执行的所有命令都会继承环境变量,部分命令取决于环境变量。
你可以创建环境变量并用来控制命令行为,无需修改命令本身。例如,你可以使用环境变量来让命令将调试信息打印到控制台。若要查看所有环境变量,请输入:
env
当你从 shell 启动 App 时,该 App 将继承大部分的 shell 环境,包括导出的环境变量。这种形式的继承有利于进行 App 的动态配置。例如,你的 App 可以检查某个环境变量的存在(或值),并据此更改其行为。
设置环境变量
export
命令用于设置或显示环境变量,格式为:export
[变量名]=[变量值],例如:
export PATH="/opt/homebrew/bin:$PATH"
上面PATH设置时,路径后面加了":$PATH",表示之前PATH的值 ,不加入使得PATH为设置的值(唯一)。注:冒号表示并列。
shell的环境变量一般都保存在配置文件中,下面简要介绍一下各种shell的配置文件。
配置文件
shell的配置文件有两种,一种是全局配置文件,一种是用户配置文件。推荐设置用户个人自己的环境变量,尽量不破坏Mac系统全局变量。比如若是zsh,那么推荐改动~/.zshrc
文件。(注意下面有些文件可能没有,每个电脑不一样)
全局配置文件
配置文件 | 描述 |
---|---|
/etc/profile | 系统级别 |
/etc/paths | 系统级别 |
/etc/bashrc | 基于bash |
/etc/zprofile | 基于zsh |
/etc/zshrc | 基于zsh |
用户配置文件
配置文件 | 描述 |
---|---|
~/bash_profile | 基于bash(shell) |
~/etc/zprofile | 基于zsh(shell) |
~/.zshrc | 基于(shell) |
以zsh为例,介绍一下不同文件的作用。.zprofile
和 .zshrc
这两个文件都是与 Zsh shell 相关的配置文件,它们的作用略有不同:
- .zprofile:
zprofile
文件是在登录时(login shell)被执行的。当您从登录管理器或远程登录时,Zsh 将被作为登录 shell 启动,并且会执行.zprofile
中的命令。这通常用于设置一些与登录会话相关的环境变量和执行初始化命令。
- .zshrc:
.zshrc
文件则是在交互式 non-login shell 启动时被执行的。也就是说,当您在一个已经登录的终端中启动新的 Zsh shell 时,会执行.zshrc
中的命令。这个文件通常包含了定制提示符、别名、自定义函数等与交互式使用相关的设置。
因此,zprofile
主要用于设置登录会话相关的环境变量和执行初始化命令,而 .zshrc
则主要用于定制交互式 shell 的行为和环境设置。