惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
博客园 - 【当耐特】
Cloudbric
Cloudbric
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Attack and Defense Labs
Attack and Defense Labs
爱范儿
爱范儿
The Cloudflare Blog
腾讯CDC
Security Archives - TechRepublic
Security Archives - TechRepublic
TaoSecurity Blog
TaoSecurity Blog
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
C
Check Point Blog
Schneier on Security
Schneier on Security
S
Schneier on Security
J
Java Code Geeks
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
A
About on SuperTechFans
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Google DeepMind News
Google DeepMind News
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
A
Arctic Wolf
S
Secure Thoughts
P
Palo Alto Networks Blog
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 三生石上(FineUI控件)
D
Darknet – Hacking Tools, Hacker News & Cyber Security
量子位
U
Unit 42
I
InfoQ
D
DataBreaches.Net
P
Privacy International News Feed
T
Troy Hunt's Blog
博客园 - 叶小钗
T
Threatpost
博客园 - Franky
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
www.infosecurity-magazine.com
www.infosecurity-magazine.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Cisco Blogs

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
码农的自我修养之保持干净的 $HOME 目录 - 少数派
2025-08-13 · via 少数派

前言

本人在生活中就是一个秩序敏感者,喜欢将桌面整理的井井有条,很享受简洁给我带来的安定感。

这种习惯也带入到使用电脑的场景,我所有文档都分类摆放在特定目录,在任何时候我都可以快速准确到找到需要的文件。

也会定期清理不重要的文件,让资源管理器处于轻松的状态。这算一种强迫症,喜欢删除认为不重要的东西,也反感应用软件在我非预期的地方放置文件。

电影《机器人总动员》里面有个扫地机器人,它非常热衷于自己的清洁工作,容忍不了一点点污染,是我印象深刻的片段。

在桌面操作系统中会为每个用户分配一个「用户目录」,当前用户在使用系统时产生的数据都会保存在这个用户目录下。

系统也会预设好一些通用分类的目录如:

  • 图片
  • 文稿
  • 下载
  • 音乐
  • 应用程序
  • 影片
  • 桌面

我们在管理数字资产的时候通常会遵循预设的分类去摆放数据,以便我们的管理和检索。

一些应用程序在使用期间会产生一些配置文件,缓存文件和用户数据等。

用户目录已经有一些较为通用的分类文件夹如: .cache .config.local   

往往很多应用程序都是将这些数据直接放置在用户的根目录,并创建自己的专属文件夹(.xxx),如图:

很多 .xxx 文件都是应用程序生成的

理论上类似 .npm.vscode  这些目录都是应该收敛到  .cache .config.local     去的。

强迫症患者 + 洁癖患者看着这么多的 .xxx 文件夹确实是非常难受!!

到处拉屎的 .zsh

Oh My ZSH 对于程序员来说应该无需赘述,它非常优秀,是我愿意使用终端必要前提。但是它有个缺点,就是会在你的用户目录下生成很多意外文件。

比如在成功安装好 Oh My ZSH 之后,我预期的文件只有

  • $HOME/.oh-my-zsh
  • $HOME/.zshrc

但是事实是在我的用户目录下会额外生成如下文件:

  • .zprofile
  • .zsh_history // 输入历史
  • .zsh_sessions // 会话历史
  • .zcompdump // 加速自动补全
  • .zcompdump.zwc // 编译版本,进一步加速自动补全

是的,它就是这么随意。

强迫症的我每次看到这些不速之客都非常难受,因为它们都有自己的作用,且哪怕删除了下次启动又会自动生成。

zsh 生成很多文件

于是就开始折腾如何收敛这些文件,好在可以在 .zshrc 中通过复写这些路径的变量,来达到收敛的目的。

export NODE_REPL_HISTORY="" # 关闭在终端中使用 node 的输入历史记录
export LESSHISTFILE=- # 关闭使用 less 命令的记录

# 在公共的缓存目录创建 oh-my-zsh 的缓存目录
export ZSH_CACHE_DIR="$HOME/.cache/oh-my-zsh"
mkdir -p $ZSH_CACHE_DIR

# 设置 zsh dump 的缓存文件
export ZSH_COMPDUMP="$ZSH_CACHE_DIR/.zcompdump"
# 设置 zsh 的历史记录文件
export HISTFILE="$ZSH_CACHE_DIR/.zsh_history"

# 设置 zsh 的 session 文件
# 当前设置无效,需要在 /private/etc/zshrc_Apple_Terminal 中设置
export SHELL_SESSION_DIR="$ZSH_CACHE_DIR/.zsh_sessions"
mkdir -p $SHELL_SESSION_DIR

这样就可以把那些临时文件都收敛到 $HOME/.cache 中,眼不见为净。

意外的发现

当我整理完 oh-my-zsh 的临时文件时,接着扫视 $HOME ,发现一个 .gk 的文件夹有点碍眼。

如何评判是否碍眼

就是我觉得它不是常规软件生成的,只是个妃子,不配在 $HOME 拥有独立位置的文件。

比如我会觉得 .npmrc.ssh 这种咖位的配置,直接存在于 $HOME是更容易接受的。(是的,是个严重的双标党)

于是开始谷歌这个 .gk 是干嘛的,搜到对应的 vscode-gitlens-issue 有人同样反感这个文件在 $HOME 里生成,建议作者采纳修改建议。

作者表示不想改,并且巴拉巴拉...

接着该用户搬出了一个社区的规范,并且列举了一些已经遵守该规范的 PR


于是我就发现了 XDG_Base_Directory 这个造福强迫症患者对人类文明进步做出贡献的规范。

XDG_Base_Directory

XDG_Base_Directory (Cross-Desktop Group)是一个由 freedesktop 发起的标准规范。 定义了配置文件数据文件状态数据缓存文件的存储路径,主要用于类 Unix/Linux 系统。

这套标准的目标是 减少 $HOME 目录的混乱,避免一堆 .* 文件(如 .bashrc.gitconfig.zsh_history)直接放置在 $HOME 里。

XDG 规范主要定义了以下 4 个环境变量:

变量作用适合存放的数据示例
XDG_CONFIG_HOME配置文件用户的应用配置~/.config/git/config
XDG_CACHE_HOME缓存可随时删除的数据~/.cache/zsh/
XDG_DATA_HOME用户数据需要长期存储的数据~/.local/share/nvim/undo/
XDG_STATE_HOME应用状态数据运行时状态、日志、历史记录~/.local/state/zsh/history


所以正常情况下我们都需要在 .zshrc 里做如下配置:

# XDG Base Directory Specification https://wiki.archlinux.org/title/XDG_Base_Directory
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
# XDG Base Directory Specification end

如果应用程序跟进实现了此标准,那么在需要保存文件的时候,会优先读取 XDG- 对应的路径(用户自定义),否则回退到系统默认。

正常情况下都推荐将 XDG- 对应的路径设置为系统默认,即如上给出的配置示例。除非你有特别强烈的定制需求。

比如某个应用程序需要往磁盘写入一些缓存文件,那么应该按照如下方式实现:

import { join } from 'path';
import { homedir } from 'os';

const XDG_CACHE_HOME = process.env.XDG_CACHE_HOME || join(homedir(), ".cache");

const applicationCachePath = join(XDG_CACHE_HOME, 'your-application-name')

虽然推荐应用按如上示例的优先级去获取路径,但是有些应用为了保持用户的习惯,在获取不到 process.env.XDG_CACHE_HOME 时,它是默认回退到 ~/.xxx

比如 Git

  • $GIT_CONFIG_GLOBAL(如果设置了)
  • $HOME/.gitconfig
  • /etc/gitconfig(系统级别)

所以为了确保实现了 XDG_Base_Directory 规范的应用优先获取到 XDG- 路径,推荐用户都明确做好如下配置,确保命中第一优先级。

# XDG Base Directory Specification https://wiki.archlinux.org/title/XDG_Base_Directory
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_CACHE_HOME="$HOME/.cache"
export XDG_DATA_HOME="$HOME/.local/share"
export XDG_STATE_HOME="$HOME/.local/state"
# XDG Base Directory Specification end

XDG_Base_Directory 维护了一个表格,将那些已经遵循该规范的应用列举在上面。

我截取了部分,有兴趣的同学可以点击链接 进行查看。

ApplicationLegacy PathSupported SinceDiscussionNotes
act~/.actrc

1656

2195

[5]

XDG_CONFIG_HOME/act/actrc

If present ~/.actrc will be merged with the XDG path config.

aerc fff1664 XDG_CONFIG_HOME/aerc/aerc.conf
ALSA~/.asoundrc

577df36

1.2.3

[6]XDG_CONFIG_HOME/alsa/asoundrc
anacondaAUR~/.conda/.condarc, ~/.conda/condarc, ~/.conda/condarc.d/, ~/.condarc4.11.0[7] [8] 
Android Studio~/.AndroidStudioX.XAndroid Studio 4.1 
XDG_CONFIG_HOME/Google/AndroidStudioX.X
XDG_DATA_HOME/Google/AndroidStudioX.X
XDG_CACHE_HOME/Google/AndroidStudioX.X

Location overview by Google does not mention XDG - paths could be hardcoded instead of using the proper variable, though that is unlikely as Intellij IDEA, which Android Studio is based on, implements it properly as well

Anki~/Anki, ~/Documents/Anki [9] [10] [11]Uses $XDG_DATA_HOME/Anki2 as default if no older location exists, can be changed by using anki -b <anki_dir>
antimicrox~/.antimicro, ~/.antimicroxedba864[12] 
apvlvAUR~/.apvlvrc[13][14]Uses XDG_CONFIG_HOME/apvlv/apvlvrc now if it exist.

它甚至列举了这些应用从哪个版本开始遵循该标准,且给出了具体的修改PR。

下面简单看个 PR

这是 ACT 应用在跟进 XDG 标准的 PR

咱们前端的包管理工具 pnpm 也跟进了此规范 具体查看

实际效果:

xdg-ninja

GitHub 上的一个小工具,用于检测当前用户目录是否有可迁移到 XDG 目录的文件。

截图是我电脑上的文件明细,它会列出是否支持 XDG 甚至指导你如何迁移配置。

遵循标准的收益

如果所有软件都自觉遵守该规范,那么 $HOME 将会变得非常干净,也更便于文件管理。

清理数据

当你想清理磁盘,可以大胆的删除 $XDG_CACHE_HOME or $HOME/.cache 这样所有应用程序产生的缓存文件就全部被删除了。

加速检索

可以把 $XDG_CACHE_HOME or $HOME/.cache 这类文件加入忽略列表,可以提升检索效率。

数据迁移

如果要重装系统,那么你可以直接备份 $XDG_CONFIG_HOME 到新系统。这样你之前苦心经营好的软件配置都全部同步好了。

结尾

在 2025 年期待一下:

所有应用产生的文件都在它该有的地方,所有应用在卸载的时候都可以将自己创建的非用户数据一并删除。

希望在若干年后,我们可以拥有一个简洁规范的 $HOME 目录。

这个世界的美好,离不开那些为之努力的人,哪怕是在某个极小慎微的地方做付出。他们在默默推动标准的实现,我列举一些在搜索资料时看到的案例:

有热心用户给出优化建议,有负责任的开发者积极采纳。

立个 FLAG 吧,我目前负责公司的某个产品的客户端开发,我后期也会推进这个规范的落地。

友情提示

如果看文章的你在点击这些外链会看到这个页面:

中转提示页

那么你可以安装我的另外一个浏览器插件 「redirect-skipper」它可以让你无感跳过这些中转页面。