PATH
操作系统用于查找可执行文件的环境变量,包含一组目录路径,系统按顺序在这些目录中搜索命令对应的可执行文件
核心事实
时间轴 (近 90 天)
从 Finder 启动的 macOS 应用无法继承终端中的 PATH 环境变量,导致调用 claude 等 CLI 时报 command not found。
安装 Node 后建议重启终端或电脑,以刷新 PATH 环境变量,否则 node、npx 等命令可能无法找到。
npm 全局安装(`-g`)会将包下载到全局 node_modules 目录,并在 Node 的 bin 目录创建可执行入口,该目录默认在 PATH 中;已打开的终端不会感知 PATH 变化,因此需要重开终端。
把家目录下的可执行目录加入 PATH 时,应当使用 $HOME 而不是 ~,写法为 export PATH="$HOME/bin:$PATH"。
~ 在 PATH 中时而工作、时而失效的根源是:只有当某个中间环节恰好调用了 shell 来处理时,它才可能被展开。
应避免使用 export PATH="~/bin:$PATH" 这种写法,因为 ~ 不会被系统调用展开。
在 PATH 中放置相对路径(如 . 或 ./bin)会带来安全隐患:在不可信目录下执行命令时,可能意外运行同名的恶意程序。
操作系统查找可执行文件时,会按 PATH 中列出的目录顺序逐一搜索;将 . 放入 PATH 会导致系统优先在当前目录中寻找同名程序,攻击者可放置同名恶意可执行文件(如 ls、git、python)执行恶意代码,这类攻击历史上被称为“当前目录劫持”。
PATH 中应当只包含明确的绝对路径;$HOME 展开后是绝对路径符合要求,~ 是否展开取决于谁来解析充满不确定性。
PATH 环境变量的内容在被系统调用(如 execvp)读取时,不经过 shell 的展开流程,因此 PATH 中的 ~ 会被当作普通字符目录处理。
还有 5 条时间轴事件
全部知识事实 (15)
安装 Node.js 时勾选 Add to PATH 会自动把安装路径添加到系统环境变量 PATH 中,让系统在任何位置识别 node 和 npm 命令
75%已验证PATH是操作系统中的一个环境变量,告诉系统在哪些目录下寻找可执行程序
65%待验证从 Finder 启动的 macOS 应用无法继承终端中的 PATH 环境变量,导致调用 claude 等 CLI 时报 command not found。
50%待验证安装 Node 后建议重启终端或电脑,以刷新 PATH 环境变量,否则 node、npx 等命令可能无法找到。
50%待验证npm 全局安装(`-g`)会将包下载到全局 node_modules 目录,并在 Node 的 bin 目录创建可执行入口,该目录默认在 PATH 中;已打开的终端不会感知 PATH 变化,因此需要重开终端。
50%待验证操作系统查找可执行文件时,会按 PATH 中列出的目录顺序逐一搜索;将 . 放入 PATH 会导致系统优先在当前目录中寻找同名程序,攻击者可放置同名恶意可执行文件(如 ls、git、python)执行恶意代码,这类攻击历史上被称为“当前目录劫持”。
50%待验证PATH 中应当只包含明确的绝对路径;$HOME 展开后是绝对路径符合要求,~ 是否展开取决于谁来解析充满不确定性。
50%待验证把家目录下的可执行目录加入 PATH 时,应当使用 $HOME 而不是 ~,写法为 export PATH="$HOME/bin:$PATH"。
50%待验证PATH 环境变量的内容在被系统调用(如 execvp)读取时,不经过 shell 的展开流程,因此 PATH 中的 ~ 会被当作普通字符目录处理。
50%待验证~ 在 PATH 中时而工作、时而失效的根源是:只有当某个中间环节恰好调用了 shell 来处理时,它才可能被展开。
50%待验证应避免使用 export PATH="~/bin:$PATH" 这种写法,因为 ~ 不会被系统调用展开。
50%待验证在 PATH 中放置相对路径(如 . 或 ./bin)会带来安全隐患:在不可信目录下执行命令时,可能意外运行同名的恶意程序。
50%待验证配置环境变量后如命令不生效可能因缓存,重启电脑可解决
50%待验证将 Ollama 安装目录加入系统 PATH 环境变量可让 ollama 命令在任意位置全局调用
50%待验证安装Python时需勾选「Add Python to PATH」复选框,否则命令行无法识别Python
50%