主要观点:PATH环境变量被 shell 或 libc 读取以查找和执行程序,终端输入ls时 shell 可通过它找到/bin/ls。
关键信息:
- 在 Debian 桌面系统中默认
PATH变量为/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games,但其中部分并非必要。 - 现代系统中
/{bin,sbin}/是/usr/{bin,sbin}/的符号链接,/usr/local对作者无用,作者将/usr/localsymlink 到/usr,软件安装在/opt。 - 简化后的
PATH为/usr/sbin:/usr/bin:/usr/games,进一步去掉/usr/games,2024 年使用根符号链接后为/sbin:/bin,且/usr/sbin可能会合并到/usr/bin。 - 在
/etc/environment设置PATH并非全貌,shell 加载后还会读取/etc/profile和~/.profile,现代编程环境会向PATH添加条目,作者通过创建符号链接来明确PATH的内容,且确保系统二进制文件优先于用户二进制文件。
重要细节: - 作者通过
cd /usr && ln -s /usr local将/usr/localsymlink 到/usr。 - 各符号链接指向的具体路径,如
~/bin-rust指向.cargo/bin等。 .profile中通过条件判断来设置PATH,先判断是否存在特定目录,若存在则将其添加到PATH中,并最后导出GOPATH和PATH。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。