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会自动把通过它安装的软件设置为更高优先级,也无需配置环境变量。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值