希望我可以为此功亏一credit,但我发现它被埋在https://github.com/chcokr/osx-init/blob/master/install.sh中
这可以在没有登录UI的10.10无头VM上运行。已申请至少与10.9-10.14兼容的更新
touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress;
PROD=$(softwareupdate -l |
grep "\*.*Command Line" |
head -n 1 | awk -F"*" '{print $2}' |
sed -e 's/^ *//' |
tr -d '\n')
softwareupdate -i "$PROD" --verbose
rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
假设您只有1个结果
softwareupdate -l | grep "\*.*Command Line"
-如果返回多个版本,则可能需要更具体的逻辑。(我没有生殖器病例)
在10.10-10.14上似乎可以正常工作的一种变体(有限的测试)(10.9在cli工具名称中未返回osx版本号。因此在此无效):
PROD=$(softwareupdate -l |
grep "\*.*Command Line.*$(sw_vers -productVersion|awk -F. '{print $1"."$2}')" |
head -n 1 | awk -F"*" '{print $2}' |
sed -e 's/^ *//' |
tr -d '\n')
一些示例结果:
* Command Line Tools (OS X Mavericks)-6.2
* Command Line Tools (OS X 10.10) for Xcode-7.2
* Command Line Tools (macOS El Capitan version 10.11) for Xcode-8.2
* Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.1
* Command Line Tools (macOS Mojave version 10.14) for Xcode-10.1