macOS环境变量优先级+对应的安装方式+brew安装的好处
一、MacOS下的命令优先级
1. 问题描述
macOS中,在不同路径下安装了多个相同的软件,那么执行某个命令时的优先级是什么呢?
2. 场景假设
以常见的python为例,macOS自带了python3.9,用户在官网下载了python3.11.pkg安装包并完成安装,接着用brew等流行工具安装了最新版的python3.12,那么在macBook的磁盘里现在有三份python3可执行代码。
当在命令行中执行python3 --version
,结果是3.9
?还是3.11
?抑或是3.12
?
当未调整系统环境变量时,答案是3.12
。
3. 原因分析
要想知道系统以何种方式加载软件,就应该找到它的环境变量,查看系统认定的目录优先级是如何排序的。macOS中,系统根目录(地址为/
)下的/etc/paths
中有对应的优先级排序:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
那这些优先级对应哪些安装方式呢?请看第二节:
二、对应的软件安装来源
1. 系统自带应用
系统自带应用安装于/usr/bin/
目录下,可以看到,在上述排序中,位列第二。
2. 用户手动安装应用
用户手动安装应用,多位于/usr/local/bin/
目录下, 位列第一。因此当系统自带3.9
版本的Python时,手动安装3.11
版本,执行python3 --version
命令,按照环境变量中目录顺序,结果应为3.11
,事实也确实如此。
3. 使用Homebrew安装应用
Homebrew中的brew命令非常方便版本维护和管理,以Homebrew4.2.3
版本为例,通过brew install python3
安装的软件位于/opt/homebrew/Cellar/python3
,同时brew会创建符号链接到/usr/local/bin
目录下,虽然实际安装位置排名第n,但通过链接的骚操作,排名瞬间变成了第一,而且会比第一的排名更靠前一点。此时执行python3 --version
命令,结果不出意外地显示为3.12
。
- brew安装的好处
(1)维护方便,升级/卸载一个命令即可搞定,不用手动删这个删那个
(2)不会引入快捷方式,上面用手动安装的方式装过Python3.11
,会在开始菜单冒出两个快捷方式,很不美观
(3)由于没有交互界面,所以对如git
node
python
docker
等等,这种并不需要界面交互的软件环境,非常适合用brew安装
(4)大部分情况下,可以自动配置环境变量,无需自己二次配置 - brew安装的坏处
(1)无界面,对于需要界面交互的软件来说,并不太适合用brew安装
(2)安装的是brew库中的,软件版本可能不是最新版的
三、结论
brew安装省时省力省心:
- 对于之前没有的软件,brew会自动把通过它安装的软件设置为可执行命令,无需配环境变量。
- 对于之前已经安装过的软件,brew会自动把通过它安装的软件设置为更高优先级,也无需配置环境变量。
更多推荐
所有评论(0)