MacOS环境配置

环境配置

.zprofile

  • .zprofile管理环境:打开GU应用或Terminal时,自动从该文件中加载一次全局环境变量,直至本次进程结束
    • .zprofile修改,GUI应用需要重启、Terminal重启或source ~/.zprofile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 设置全局变量
export PATH="$BIN_DIR:$PATH"

# 修改PATH识别顺序并去重
prepend_path() {
[ "$#" -lt 1 ] && { echo "Usage: prepend_path /path/one [/path/two ...]"; return 1; }

local paths=""
for dir in "$@"; do
if [ -d "$dir" ]; then
paths="$paths$dir:"
else
echo "Warning: directory $dir does not exist."
fi
done

PATH="${paths}${PATH}"
export PATH
}
export PATH=$(echo $PATH | tr ':' '\n' | awk '!seen[$0]++' | paste -sd ':' -)
# prepend_path path1 path2 ... pathn

.zshrc

  • .zshrc管理交互:每打开一个Terminal的新标签页都会执行,适合设置命令行工具、提示符、自动激活工具
1
2
3
4
5
6
7
8
9
10
# 进入目录的同时打印,builtin强调shell原始命令,避免递归
cd () {
builtin cd "$@" && ls -G;
}

# 文件删除确认及日志
rm () {
command rm -i "$@";
echo "[$(date)] 删除了文件: $@" >> ~/.rm_log;
}

包管理

Homebrew

Install

  • Homebrew是macOS上的包管理器,是用于安装、更新、卸载各种开发工具的和软件的命令行工具
  • 使用官方安装脚本:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    • /bin/bash -c:指定使用Bash shell,从字符串$(...)中读取命令并执行
    • curl -fsSL:从GitHub下载官方安装脚本install.sh
      • -f (--fail):入请求失败,直接返回非零退出码
      • -s (--silent):静默模式,不显示进度条、连接信息等冗余输出
      • -S (--show-error):与-s结合使用,当发生错误时显示冗余错误信息
      • -L (--location):若目标URL有跳转,自动跟进最终地址
  • ~/.zprofile中设置环境变量:eval "$(/opt/homebrew/bin/brew shellenv)"
    • eval会自动执行$(...)内的字符串输出:自动将/opt/homebrew/bin中的可执行文件或软链接加入全局变量
    • source ~/.zrofile后,输入brew -v (--version)检查环境变量设置是否成功

Info

  • 使用brew info xxx能够查询到软件包的基础信息、安装状态、依赖项、注意事项和统计信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
arvin@arvinhwo ~ % brew info openjdk
==> openjdk: stable 25.0.1 (bottled) [keg-only]
Development kit for the Java programming language
https://openjdk.org/
Installed
/opt/homebrew/Cellar/openjdk/25.0.1 (557 files, 389.5MB)
Poured from bottle using the formulae.brew.sh API on 2025-11-26 at 15:29:20
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/o/openjdk.rb
License: GPL-2.0-only WITH Classpath-exception-2.0
==> Dependencies
Build: autoconf ✘, pkgconf ✘
Required: freetype ✔, giflib ✔, harfbuzz ✔, jpeg-turbo ✔, libpng ✔, little-cms2 ✔
==> Requirements
Build: Xcode (on macOS) ✘
==> Caveats
For the system Java wrappers to find this JDK, symlink it with
sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

openjdk is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS provides similar software and installing this software in
parallel can cause all kinds of trouble.

If you need to have openjdk first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> /Users/arvin/.zshrc

For compilers to find openjdk you may need to set:
export CPPFLAGS="-I/opt/homebrew/opt/openjdk/include"
==> Analytics
install: 79,590 (30 days), 230,715 (90 days), 1,003,295 (365 days)
install-on-request: 34,596 (30 days), 102,135 (90 days), 501,993 (365 days)
build-error: 1,961 (30 days)
  • bottled表示该软件包提供了预编译的二进制包,Homebrew默认优先使用
    • 使用二进制包无需从源码编译安装,需要满足运行依赖项Required
  • keg-only软件包单独存放,安装后不会自动在/opt/homebrew/bin建立全局软链接
    • 这可以避免直接覆盖系统自带同名软件、破坏系统依赖,如openjdk,同时若使用Homebrew安装了多版本的keg-only软件包,也可以手动选择使用哪个版本
  • Analytics是Homebrew的匿名统计数据,反映该软件包的流行程度和稳定性

Python3

  • Python3是新一代Python语言和运行环境

    • 使用pip3python3等命令运行
    • pip3是Python3自带的包管理工具(Package Installer for Python)
  • 使用Homebrew安装Python3:brew install python

    • 输入brew info python检查是否成功
  • 从info中得知,Homebrew并未直接将pythonpip等无版本号命令加入全局链接

    • ~/.zprofile中将/opt/homebrew/opt/python@3.14/libexec/bin加入环境变量后,即可使用pippython等命令运行
    • 若同时打开/opt/homebrew/bin/pip3/opt/homebrew/opt/python@3.14/libexec/bin/pip可以发现内容是相同的
1
2
3
4
5
6
7
#!/opt/homebrew/Cellar/python@3.14/3.14.0_1/bin/python3.14
import sys
from pip._internal.cli.main import main
if __name__ == '__main__':
if sys.argv[0].endswith('.exe'):
sys.argv[0] = sys.argv[0][:-4]
sys.exit(main())
  • 若项目需要,可在项目根目录创建虚拟环境:python -m venv myenv
    • 虚拟环境能实现在不同项目中使用不同版本的库,避免冲突
    • 手动激活虚拟环境:source myenv/bin/activate;或使用下列dienv工具

Direnv

  • Direnv让目录自己管理环境,进出自动生效/撤销,不污染全局Shell
  • 使用Homebrew安装Direnv:brew install direnv
    • 输入brew info direnv检查是否成功
  • 配置自动识别:echo 'eval "$(direnv hook zsh)"' >> ~/.zshrc
    • 放在.zshrc而非.zprofile是为了在新开的tab也能生效
  • 在项目根目录创建.envrcecho 'source ./myenv_path/bin/activate' > .envrc
    • >>追加写入;>覆盖写入
  • 允许.envrcdirnev allow,实现每次进入项目目录,虚拟环境自动激活;离开目录,虚拟环境自动退出

Node.js

  • Node.js是运行JavaScript的高性能运行环境

    • 使用npm命令安装包,npm是Node.js自带的包管理器(Node Package Manager)
  • 使用Homebrew进行安装:brew install node

    • 输入brew info node检查是否成功

Hexo

  • Hexo是一个快速、轻量的静态博客框架
  • 使用npm命令安装Hexo:npm install -g hexo-cli
  • 其余操作与Windows平台中相同,参见文章Hexo部署

Git

  • Git是一个分布式版本控制系统,用来记录代码历史i、多人协作、管理项目变更

    • 使用git命令运行
  • 使用Homebrew进行安装:brew install git

    • 输入brew info git检查是否成功
  • 其余操作与Windows平台中相同,参见文章Git指南

OpenJDK

  • Open Java Development Kit是Java平台的开源实现,包含Java开发和运行的核心组件
    • 使用java命令运行
  • 使用Homebrew安装:brew install openjdk
    • 也可以使用brew search openjdk搜索可用版本并安装
    • 输入brew info openjdk检查是否成功
  • OpenJDk是keg-only软件,需要在~/.zprofile中设置环境变量
    • source ~/.zrofile后,输入java -version检查环境变量设置是否成功
1
2
export JAVA_HOME="/opt/homebrew/opt/openjdk"
export PATH="$JAVA_HOME/bin:$PATH"

PlantUML

  • PlantUML是一个文字画UML图的工具,内部可以调用Graphviz来排版

    • 使用plantuml运行脚本
    • UML:Unified Modeling Landuage Diagram,统一建模语言图
  • 使用Homebrew安装:brew install plantuml

    • 输入brew info plantuml检查是否成功

Graphviz

  • Graphviz是一个图形布局引擎和绘图库,绘图基础工具
    • 使用dot命令运行脚本
  • 使用Homebrew安装:brew install graphviz
    • 输入brew info graphviz检查是否成功

Tcl/Tk

  • Tlk/Tk是一个跨平台脚本语言和GUI工具包
    • Tcl:Tool Command Language,用于自动化、测试、嵌入式开发,使用tclsh命令运行脚本
    • Tk:Tcl的图形界面库,可快速创建窗口、按钮、文本框等GUI,使用wish命令运行脚本
  • 使用Homebrew安装:brew install tcl-tk
    • 输入brew info tcl-tk检查是否成功

快捷键

系统

  • 锁屏:ctrl+command+q
  • 结束当前应用进程:command+q
  • 卡死时强制退出:command+option+esc
  • 显示或隐藏程序坞command+option+d
  • 切换应用:command +tab
    • 切换上一个应用:command+shift+tab
    • 切换同一个应用的窗口:command+num

窗口

  • 关闭当前窗口:command+w
    • 对应窗口左上角红色圆点,应用转为后台运行,内存不足时自动退出
  • 最小化窗口到程序坞:command+m
    • 对应窗口左上角黄色圆点
  • 进入/退出全屏:ctrl+command+F
    • 对应窗口左上角绿色圆点
  • 隐藏当前应用所有窗口:command+h

截图

  • command+shift+3:截取屏幕到文件
    • command+shift+control+3:截取屏幕到剪切板
  • command+shift+4:截取指定区域到到文件
    • command+shift+control+4:截取指定区域到到剪切板