Homebrew 进阶
饭前小菜
- F1 or command+shift+P, 输入settings.json, 设置
"markdown.preview.breaks": true
,然后保存即可。 - 如果settings.json无法编辑,在设置中搜索markdown.preview.breaks,打钩即可。
官方仓库
- 默认仓库
homebrew formula仓库:https://github.com/Homebrew/homebrew-core
homebrew Cask仓库:https://github.com/Homebrew/homebrew-cask - 官方三方仓库(需要tap才能用)
homebrew-cask-drivers(驱动cask仓库): https://github.com/Homebrew/homebrew-cask-drivers - 非官方三方仓库(需要tap才能用)
homebrew-rmtree(循环移除软件包): https://github.com/beeftornado/homebrew-rmtree
注意:有的三方仓库中只有一个指令,这种仓库一般brew tap
后,无需brew install
即可使用
brew版本切换
比如你的电脑上有node@12
、node@10
两个版本,目前node
命令指向的是node@10
,那么可以以下命令达到版本切换效果:
brew unlink node@10
brew link --overwrite --force node@12
homebrew环境变量
细心的同学会发现,当安装完homebrew
后,会出现如下提示,让你设置环境变量:
==> Installation successful!
...
==> Next steps:
- Run these two commands in your terminal to add Homebrew to your PATH:
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/guo/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
- Run brew help to get started
- Further documentation:
https://docs.brew.sh
猜测brew shellenv
命令是将/opt/homebrew/bin
加入到了环境变量中,这样通过brew install
安装的命令(formula)
就能够通过命令行直接执行。
在验证猜测前,需要搞懂如下命令的含义:
eval
的作用
当我们在命令行前加上eval
时,shell就会在执行命令之前扫描它两次。eval
命令将首先会先扫描命令行进行所有的置换,然后再执行该命令.zprofile
文件的作用:参考
简单来说:.zprofile
、.zlogin
:login shell时,会加载其中的命令,两个文件基本相同,只有加载时机有区别。
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/guo/.zprofile
所以,如果我们将.zprofile
文件删除,然后退出终端重新打开后输入brew
命令,将会提示找不到命令。原因是打开终端login shell时没有加载.zprofile
文件写好的命令。
Last login: Thu Feb 23 01:27:08 on ttys001
➜ ~ brew
zsh: command not found: brew
最后,执行 (echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/guo/.zprofile
命令,即可重新正常使用brew
与使用brew install
安装的命令。
alias命令
接着上面介绍的.zprofile
文件说,我们知道,brew install
安装的python@3.11
,最后对应命令python3
,如果我们要使用python
来执行python3
命令,可以执行alias python=python3
命令,然后就可以使用python
来执行python3
指令了。
但是这样其实有一个缺点:当关闭终端重新打开,原先设置的alias python=python3
命令就会失效。所以这里其实可以学习homebrew
的思路,我们在.zprofile
文件中,加一行命令:alias python=python3
,这样就能达到打开终端时自动执行alias
命令,从而间接达到alias
命令永久有效。