文章更新
- 20170312-初次成文
为什么会有这篇文章
最近运行brew updagre,发现一些软件有了冲突,记得上次更新还是在几个月之前,发现有一些软件也觉得过期想要卸载了,装了homebrew,所以可以使用brew uninstall方便的卸载掉他们,但是无意中发现其实Homebrew装软件的原则是不破坏原来的系统自带软件或者稳定性,所以将所有装的软件全部放到了/usr/local/Cellar目录下,这还好说,但是有的软件,总会在系统中同时存在几个版本,比如在升级wget这个工具的时候,系统自带的在/usr/bin目录下,Homebrew装的在/usr/local/Cellar/wget目录下,一个1.18,一个1.19,但是/usr/local/opt目录下的wget又是个什么鬼?好了,下文慢慢扯。
macOS系统的目录结构
因为 Mac 属于一种类 Unix 系统,因此 Mac OS X 目录
= Unix 系统通用目录
+ 独有目录
,Mac OS X已经是被认证的Unix系统,所以其目录结构基本符合Unix系统目录结构。但是有很多目录在Finder中并看不到,这是因为这些目录的被设置了隐藏属性,我们可以在终端窗口中利用unix命令查看。
Unix 通用目录
- /bin 传统unix命令的存放目录,如ls,rm,mv等。
- /sbin 传统unix管理类命令存放目录,如fdisk,ifconfig等等。
- /usr 第三方程序安装目录。
- /dev 设备文件存放目录,如何代表硬盘的/dev/disk0。
- /usr/bin, /usr/sbin, /usr/lib,其中/usr/lib目录中存放了共享库(动态链接库).
- /etc 标准unix系统配置文件存放目录,如用户密码文件/etc/passwd。此目录实际为指向/private/etc的链接。
- /tmp 临时文件存放目录,其权限为所有人任意读写。此目录实际为指向/private/tmp的链接。
- /var 存放经常变化的文件,如日志文件。此目录实际为指向/private/var的链接。
macOS独有目录
- /Applications 应用程序目录,默认所有的GUI应用程序都安装在这里
- /Library 系统的数据文件、帮助文件、文档等等
- /Network 网络节点存放目录
- /System 只包含一个名为Library的目录,这个子目录中存放了系统的绝大部分组件,如各种framework,以及内核模块,字体文件等等。
- /Users 存放用户的个人资料和配置。每个用户有自己的单独目录。
- /Volumes 文件系统挂载点存放目录。
- /cores 内核转储文件存放目录。当一个进程崩溃时,如果系统允许则会产生转储文件。
- /private 里面的子目录存放了/tmp, /var, /etc等链接目录的目标目录。
用户资料存放位置
对于普通OS X用户来说,对系统目录树结构的理解与否并不影响正常使用系统,以至于OS X把很多目录都故意隐藏,让普通用户通过Finder不能看到。用户真正关心的是把自己的资料存放到哪里更加方便和安全。
Windows用户通常会把个人资料存放在非系统盘的其它分区中,因为Windows系统一旦死掉,C盘的内容很可能就找不回来了。Mac OS X的用户则不用担心这个问题,OS X发生崩溃和不能启动的概率实在是太低了,就算是系统出现问题,由于用户目录和系统目录是彼此独立的,所以也容易找回。所以通常情况下,用户直接把资料存放在自己的用户目录中,OS X也建议用户这么做,并且已经为用户准备好了常用的子目录。
应用程序、文档、下载、音乐、电影、图片、公共,对于普通用户来说这些子目录也就够用了,当然如果你觉得不够,可以自己随便添加。
从Windows过来的用户,如果还想保持原来的习惯,把用户文件和系统文件存放在不同的分区中,那么就需要利用“磁盘工具”重新分区,把系统分区调整小一些,留出空间建立一个新的HFS+分区,使用的时候把这个分区挂载到系统目录树上。
关于/usr/local和opt目录
其实在unix系统下,这两个目录的区别还是有一些的
- /usr/local下一般是你安装软件的目录,这个目录就相当于在windows下的programefiles这个目录
- /opt这个目录是一些大型软件的安装目录,或者是一些服务程序的安装目录
但是在安装了Homebrew的macOS系统上,区别嘛,直接看图吧。
看到了么?所有的文件,都指向了Cellar目录下的程序,也就是说这个目录目前放的,主要是用来兼容程序使用的目的。
使用Homebrew管理macOS的软件
Homebrew的介绍我统一搬家到这个帖子,请使劲戳。