macOS 修改添加环境变量
Mac修改环境变量
首先macOS有两个命令行工具(shell):
1.zsh
2.bash
先搞清楚你的mac目前用的是哪个(一般新一点的mac都默认用的zsh)
在终端输入
echo $SHELL
就可以看到电脑当前使用的shell
可见我电脑使用的zsh
macOS中有两个重要的配置文件 zprofile, zshrc
在 Zsh 中,~/.zprofile 和 ~/.zshrc 是两个关键配置文件,它们的核心区别在于 加载时机 和 适用场景。以下是具体对比和实际应用指南:
什么是「登录 Shell」和「交互式 Shell」?
登录 Shell(Login Shell):
场景:通过系统登录(如 SSH、终端首次启动*)、login 命令进入的 Shell。
特征:执行 ~/.zprofile 中的配置。
macOS 终端默认行为:通常以「登录 Shell」启动新窗口(取决于终端设置)。
交互式 Shell(Interactive Shell):
场景:用户手动输入命令的 Shell(如终端窗口、标签页)。
特征:执行 ~/.zshrc 中的配置,每次打开新终端均会加载。
应该把配置写在哪个文件?
(1) ~/.zprofile(登录 Shell 配置)
用途:
存放全局环境变量和只需执行一次的设置。
典型配置:
# 环境变量(如 PATH)
export PATH="/usr/local/bin:$PATH"
# 启动代理(如 SSH-Agent)
eval "$(ssh-agent -s)"
# 系统级初始化(如加载 SDK)
export JAVA_HOME=$(/usr/libexec/java_home)
注意:
这些配置在用户登录时运行一次,之后所有子进程(包括终端窗口)都会继承这些变量
(2) ~/.zshrc(交互式 Shell 配置)
用途
存放交互式功能和每次启动 Shell 需要的配置。
典型配置
# 别名(Aliases)
alias ll="ls -al"
# 插件和主题(如 Oh My Zsh)
plugins=(git zsh-autosuggestions)
ZSH_THEME="robbyrussell"
# Shell 选项(如补全、历史记录)
autoload -U compinit && compinit
setopt HIST_IGNORE_DUPS
# 函数(每次交互时可用)
function mkcd() { mkdir -p "$1" && cd "$1"; }
注意:
这些配置会在每次打开新终端窗口或标签页时执行,适合动态调整交互行为。
那么,哪些东西应该放在哪个配置文件中呢?
最佳实践
环境变量:优先放在 ~/.zprofile,避免每次启动重复加载。
交互功能:别名、插件、主题等放在 ~/.zshrc。
共享配置:若需跨 Shell 共享配置(如 Bash 和 Zsh),可创建 ~/.shared_env 文件,并在两个 Shell 的配置中引入:
# 在 ~/.zprofile 和 ~/.bash_profile 中添加
if [ -f ~/.shared_env ]; then
source ~/.shared_env
fi
配置文件选择
~/.zprofile:登录时运行一次,适合全局环境变量和初始化任务。
~/.zshrc:每次交互式 Shell 启动时运行,管理交互功能和动态配置。
优先级:多数用户只需关注 ~/.zshrc(90% 的配置在此),仅在需要登录时初始化使用 ~/.zprofile。
编辑环境变量
编辑环境变量有两个常用的编辑器
一个是vim
一个是nono
我个人喜欢用vim,比较简约直观。
在终端运行
vim ~./zprofile
就进入了vim的环境变量编辑界面
按一下 I
进入编辑模式,然后就可以插入你想新增的环境变量了。
编辑完成
输入 :wq
然后按回车,即可保存并退出编辑器。