69

I frequently find myself SSHing into various OS X machines, and it'd be useful if I could tell what version of OS X I was on when I'm doing that. uname -a doesn't quite work, since Darwin kernel versions don't always change with the rest of the system.

5 Answers 5

79

sw_vers

My suggestion is to use sw_vers. Example output as of 10.6.4:

> sw_vers 
ProductName:    Mac OS X
ProductVersion: 10.6.4
BuildVersion:   10F569

The answer that suggested system_profiler | grep 'System Version' is what I have tried to use in the past, but it has 2 problems.

  1. It is slow since it generates a full system_profiler dump of the machine, gathering all hardware and software inventory information.
  2. The output of system_profiler has changed over time. e.g. output of grep for 'Serial Number' on 10.6.4 is "Serial Number (system): ZNNNNNZNZZZ", whereas on 10.4.11 it was "Serial Number: ZNNNNZNZZZZ" - importance being the parse-ability of the output and the add " (system)" piece can be problematic unless you are expecting the change.
2
  • 1
    I'd flip this around. ``` Use sw_vers … --------------------------- The answer that suggested system_profiler… ```
    – Tim Visher
    Commented Nov 30, 2015 at 15:09
  • @TimVisher Agreed. I just edited his answer to put it at the top. Commented Jan 6, 2017 at 15:14
38

The easiest way is:

$ sw_vers -productVersion
10.6.4

From http://tinyapps.org/blog/mac/201008140700_os_x_version_terminal.html:

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.6.4
BuildVersion:  
10F569
$ sw_vers -productVersion
10.6.4

Especially handy when resetting a password in single user mode, since the method varies based on which version of OS X is running.

1
  • Thanks for the shout-out Benjamin! I've updated the post to include checking an offline OS X install like so: grep -2 ProductVersion /System/Library/CoreServices/SystemVersion.plist. Aloha, Miles
    – Miles
    Commented Sep 13, 2016 at 20:44
8

Try this:

 system_profiler  | grep 'System Version'

Mike Gray's answer is better than this. Please see that

2
  • 4
    what Mike Gray said.
    – user601
    Commented Aug 18, 2010 at 17:05
  • Single-user mode system_profiler SPSoftwareDataType wins where sw_vers loses.
    – Devon
    Commented May 5, 2018 at 17:33
6

Here is a Blog article with instructions How to Get the Mac OS X Version in a Shell Script

OS_VERSION=`/usr/bin/defaults read "$3/System/Library/CoreServices/SystemVersion" ProductVersion`
echo "$OS_VERSION"
1
  • 1
    This is very useful for finding the version of a non-active operating system, eg. a volume that is being repaired or such.
    – ylluminate
    Commented Aug 4, 2015 at 22:29
3

The system_profiler can be run as system_profiler SPSoftwareDataType. No need to grep through huge output.

5

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .