解决第一次启动 terminal 时的卡顿问题(xcodebuild)

在安装了 Xcode 后,每次重新启动 Mac 后,在第一次打开终端时,终端都会卡在 xcodebuild 进程持续 3 到 5 秒。这虽然不是一个很大的问题,但是在某些时刻这几秒的等待让人非常烦躁。

我在网上看到了几种解决方案,以下是我对它们尝试的结果。

使用 brew 安装 git

brew install git

这种方式使用 brew 安装了最新版的 git,而不是 Command Line Tools Package 或者 Xcode 自带的 git。我尝试了这种方式但是没有用。

配置 nvm

nvm alias default system

我并没有安装 nvm,所以这种方式也不适用于我。

接受 xcodebuild 用户协议

sudo xcodebuild -license accept

我尝试了这种方式,但是它对我也没有用。

修改 Xcode command line tools 路径

$ sudo xcode-select -p
/Applications/Xcode.app/Contents/Developer

$ sudo xcode-select -switch /Library/Developer/CommandLineTools

$ sudo xcode-select -p
/Library/Developer/CommandLineTools

这种方式对我有用!

如果 /Library/Developer/CommandLineTools 目录并不存在的话,那么可以尝试先执行 sudo xcode-select --install.

在初始化一台新的 mac 时,我一般会先执行 git --version 并按照提示安装 Command Line Tools Package。后者包含了 git, make 等命令行工具。这时候我的终端不会遇到卡顿的问题。但是在从 App Store 安装了 Xcode 后,终端启动的问题就出现了。所以我的理解是 Xcode 安装的命令行工具会比 Command Line Tools Package 安装的工具有更多性能问题。所以通过 xcode-select -switch 命令切换到 Command Line Tools Package 安装的工具就可以解决这个问题。

关于 Xcode 和 Command Line Tools Package 的关系,我引用苹果官网文档的描述:

The Command Line Tools Package is a small self-contained package available for download separately from Xcode and that allows you to do command line development in OS X. It consists of two components: OS X SDK and command-line tools such as Clang, which are installed in /usr/bin.

总结

等我下次配置一台干净的 Mac 时,我会尝试直接执行 sudo xcode-select -switch /Library/Developer/CommandLineTools,明确我之前执行的一些看似不成功的方案对这个问题到底有没有影响。