主要观点: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/local
symlink 到/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/local
symlink 到/usr
。 - 各符号链接指向的具体路径,如
~/bin-rust
指向.cargo/bin
等。 .profile
中通过条件判断来设置PATH
,先判断是否存在特定目录,若存在则将其添加到PATH
中,并最后导出GOPATH
和PATH
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。