私はこの1つの信用を主張することができますが、私はそれが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で機能するように見える1つのバリエーション(限定的なテスト)(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