Mac用户头像由通讯录联系人图片驱动,官方无终端直接修改命令;推荐用Photo Booth拍照设为头像(需辅助功能授权)或手动替换AddressBook Sources下的Photo.jpg(需备份并重启Contacts进程)。
mac 上的用户头像(即登录窗口、用户列表、访达侧边栏等处显示的头像)本质上是用户账户的「联系人图片」,由系统在 ~/library/application support/addressbook/sources/ 下某个 uuid 文件夹中的 photo.jpg(或 photo.png)文件驱动,并与「通讯录」中该用户的名片关联。官方不提供终端命令直接修改头像的接口,也没有 defaults write 或 dscl 命令能安全、可靠地完成此操作——强行替换底层文件或数据库极易导致头像不更新、重置,甚至影响「通讯录」同步或登录界面渲染。
不过,有两条稳定、可复现、无需第三方工具的终端辅助路径,适用于 macOS Sonoma 14 至 macOS Sequoia 15(含最新 Tahoe 26 测试版):
用终端触发 Photo Booth 拍照并设为头像
这是 Apple 官方支持的自动化方式,本质是调用系统服务:
open -a "Photo Booth"
然后手动拍照 → 点击“共享”→“更改联系人图片”。
若需完全自动(如部署脚本),可配合 osascript 模拟点击(需开启辅助功能权限):
osascript -e 'tell application "Photo Booth" to activate' \
-e 'delay 1' \
-e 'tell application "System Events" to click button "Take Photo" of window "Photo Booth" of process "Photo Booth"' \
-e 'delay 0.5' \
-e 'tell application "System Events" to click menu item "更改联系人图片" of menu "共享" of menu bar item "共享" of menu bar 1 of application process "Photo Booth"'
⚠️ 注意:首次运行需在「系统设置 > 隐私与安全性 > 辅助功能」中授权 Terminal 或 Script Editor。
用终端批量替换头像文件(高级用户适用)
前提是已准备好标准尺寸 PNG 图片(建议 256×256 或 512×512,无透明背景更稳妥):
- 找到当前用户的 AddressBook 源目录:
uuid=$(dscl . -read ~/ UniqueID | awk '{print $2}') source_dir=$(mdfind "kMDItemCFBundleIdentifier == 'com.apple.AddressBook'" | head -1 | xargs dirname)/Sources/$(ls "$(mdfind "kMDItemCFBundleIdentifier == 'com.apple.AddressBook'" | head -1 | xargs dirname)/Sources/" | head -1) - 备份原图并写入新图:
cp "$source_dir/Photo.jpg" "$source_dir/Photo.jpg.bak" cp /path/to/your/avatar.png "$source_dir/Photo.jpg" # 强制刷新缓存 killall Contacts # 重启通讯录进程
✅ 成功后,登录窗口、用户切换界面、访达侧边栏将在数秒内更新。
❌ 风险提示:Photo.jpg若格式/尺寸异常,系统可能自动回退为默认灰色头像;部分 macOS 版本(如 Sequoia beta)会校验文件签名,导致替换失败。
不推荐的操作(易出错)
- 直接修改
/var/db/dslocal/nodes/Default/users/用户名.plist中JPEGPhoto字段(Base64 编码复杂且 macOS 12+ 已弃用) - 使用
dscl . -create ~/ Picture "/path/to/image"(该键值 macOS 10.15 后无效) - 替换
/Library/User Pictures/下的系统内置头像包(仅影响新建用户,不改变现有用户头像)
实际效果取决于你是否需要一键静默部署,还是接受一次手动确认。前者适合 IT 管理员,后者对普通用户更稳妥。











