现代 PATH 环境变量

主要观点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中,并最后导出GOPATHPATH
阅读 18
0 条评论