Skip to content

Instantly share code, notes, and snippets.

@mokagio
Created September 9, 2015 09:28
Show Gist options
  • Save mokagio/b974620ee8dcf5c0671f to your computer and use it in GitHub Desktop.
Save mokagio/b974620ee8dcf5c0671f to your computer and use it in GitHub Desktop.
Install Xcode CLI Tools without GUI
#!/bin/bash
# See http://apple.stackexchange.com/questions/107307/how-can-i-install-the-command-line-tools-completely-from-the-command-line
echo "Checking Xcode CLI tools"
# Only run if the tools are not installed yet
# To check that try to print the SDK path
xcode-select -p &> /dev/null
if [ $? -ne 0 ]; then
echo "Xcode CLI tools not found. Installing them..."
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" -v;
else
echo "Xcode CLI tools OK"
fi
@That-Dude
Copy link

Thank you for the code. I had to modify this slightly for it to run on Monterey 12.0.1. I have not regression tested this but it would be simple to check the OS version and use your original code for versions prior to Monterey (if this code doesn't work for them).

#!/bin/bash

# See http://apple.stackexchange.com/questions/107307/how-can-i-install-the-command-line-tools-completely-from-the-command-line

echo "Checking Xcode CLI tools"
# Only run if the tools are not installed yet
# To check that try to print the SDK path
xcode-select -p &> /dev/null
if [ $? -ne 0 ]; then
  echo "Xcode CLI tools not found. Installing them..."
  touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress;
  PROD=$(softwareupdate -l |
    grep "\*.*Command Line" |
    tail -n 1 | sed 's/^[^C]* //')
    echo "Prod: ${PROD}"
  softwareupdate -i "$PROD" --verbose;
else
  echo "Xcode CLI tools OK"
fi

@jaygooby
Copy link

jaygooby commented Apr 11, 2022

Thanks for this! Had same issue of needing to install over ssh over vpn, so no chance to get at the GUI (also had to remove the -v)

@kalaklanar
Copy link

I tested the version from @That-Dude and it works under my VM of Big Sur 11.5.2. Catalina 10.15.3 fails.

@Antom91
Copy link

Antom91 commented Sep 24, 2023

Thank you for the code. I had to modify this slightly for it to run on Monterey 12.0.1. I have not regression tested this but it would be simple to check the OS version and use your original code for versions prior to Monterey (if this code doesn't work for them).

Work on macOS Catalina

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment