在Linux或者macOS上,系统或者用户会将程序放入二进制文件目录中(一般命名为bin,例如/usr/bin等),便于快速使用,但是如果我们查看$PATH变量就会发现有好几个,它们各自都有各自的任务范围。我们也可以生成新的bin目录来做补充。

我们来介绍一下常见bin目录的用途:

  • /usr/local/bin:管理员给用户安装程序可以放在这里,一些使用时自动配置安装的程序也会放在这里。如果我们添加新的程序或者脚本就可以放在这里(不是强硬规定)。
  • /usr/bin:预装的绝大部分的程序都放在这里,Linux发行版和macos上都超过了1000个程序和脚本放在这里。这个目录用于存储供各位用户使用的程序或者脚本。也就是说,如果我们打算让所有用户都使用这个软件,也可以放在这里。
  • /bin:这个目录是标准的系统根目录下的子目录之一。在类UNIX系统中,位于文件系统层级越高(离根目录越近)的目录,也就越重要(需要的权限也更高)。这个目录用于存放可执行程序(也就是程序和脚本),用于存放系统操作相关的。
  • /usr/sbin:这个目录是系统管理员(个人电脑也就是咱们了)用于存放供系统启动后使用的不重要的系统使用工具。
  • /sbin:这个虽然列在了最后,但是它和/bin目录一样,也是标准的系统根目录下的子目录之一,包含了绝大多数的管理员用户工具,例如开机关机的命令。一般只让根用户(或者说超级用户,也就是管理员)使用。这个目录和/bin目录的区别就是,/sbin目录只被根用户使用,也就是说,我们如果打算让程序只让管理员使用,就可以放在这里。需要注意的是,macOS将其包含在$PATH环境变量中,但是部分Linux发行版没有这么做。

macOS上有一个特殊的/Library/Apple/usr/bin,看名字是苹果放在库中供用户使用的程序,只放了一个名为rvictl的程序。

同一个预装程序或者预装脚本,在不同的系统上会在不同的位置,这取决于系统开发者维护者的想法。
还有一些程序会生成自己的bin或者sbin目录,大部分都会放在/usr/local/目录下。这个需要自己去观察一下啦~