unix/mac/linux 系统里的2个bin 目录区别
mac 目录里的 /usr/bin 和 /usr/local/bin 有什么区别,如果我自己安装软件bin,最适合放哪个目录?
在 macOS 上,/usr/bin
和 /usr/local/bin
是两个常见的二进制文件存放目录,但它们有不同的用途和管理方式。
1. /usr/bin
- 用途: 系统默认的二进制文件目录。macOS 自带的命令行工具(如
ls
,cp
)以及系统安装的软件通常存放在这里。 - 权限: 这个目录是由系统控制的,用户通常没有写入权限(即使是
sudo
也可能受到系统完整性保护机制(System Integrity Protection, SIP)的限制)。 - 不要放置自定义文件: 不建议将自定义的二进制文件放到这里,因为系统更新可能会覆盖该目录的内容。
2. /usr/local/bin
- 用途: 用户自定义的二进制文件目录,专门为用户安装的第三方软件保留。例如 Homebrew 会将其安装的软件二进制文件链接到这里。
- 权限: 你对这个目录通常有完全控制权限,可以自由写入和管理。
- 推荐用法: 如果你编译、下载或创建了自己的软件,最适合将其放到
/usr/local/bin
中。这也是符合 Unix 文件系统标准(FHS)的做法。
3. 我自己安装的二进制文件放哪里?
建议优先选择 /usr/local/bin
,理由如下:
- 系统保护: 不会与系统默认工具冲突,也不会被系统更新覆盖。
- PATH 优先级: /usr/local/bin
通常在环境变量 PATH
的优先级高于 /usr/bin
(具体可通过 echo $PATH
查看)。这意味着你的自定义工具会优先被调用。
- 可移植性: 在迁移或备份时,你可以轻松识别和复制 /usr/local/bin
里的自定义工具。
如何添加二进制文件到 /usr/local/bin
假设你有一个二进制文件(如 mytool
),可以按照以下步骤操作:
1. 确保文件具有可执行权限:
chmod +x mytool
- 将文件复制到
/usr/local/bin
:
sudo mv mytool /usr/local/bin/
- 确保
/usr/local/bin
在你的PATH
中:
echo $PATH
如果不在,可以在 ~/.zshrc
或 ~/.bashrc
中添加:
export PATH="/usr/local/bin:$PATH"
然后刷新配置:
source ~/.zshrc
完成后,你可以在终端中直接运行 mytool
。