原标题:《Don't Put Tilde In Your Path》 评分: 136 | 作者: arusekk 💭 连 `~` 的位置都猜不准,还敢让脚本管生产? 🎯 讨论背景 原文讨论将 `~/.local/bin ` 加入 PATH 时的陷阱:在 Bash 等 Bourne-compatible shell 中,`~` 只有位于未引用 word 的开头才会展开,因此拼接在 `$PATH: ` 后会成为字面的 `~` 路径。`$HOME ` 是脚本中更明确的 home directory 来源,但 `HOME ` 也可能被临时覆写;`~user ` 则通常通过 getpwent(3)(查询系统用户数据库的 Unix API)查找该用户登记的 home directory,二者未必一致。讨论延伸到 Bash 的引用、参数分割和可移植性,以及 Fish(强调交互易用性的 shell)、Nushell(传递结构化数据的 shell)等替代方案。它也涉及 Unix 进程环境继承机制:PATH 通常从父进程向子进程传递,所以图形启动器、终端和不同 shell 配置可能拥有不同的搜索路径。