Search code examples
bashos-detection

How to detect the OS from a Bash script?


I would like to keep my .bashrc and .bash_login files in version control so that I can use them between all the computers I use. The problem is I have some OS specific aliases so I was looking for a way to determine if the script is running on Mac OS X, Linux or Cygwin.

What is the proper way to detect the operating system in a Bash script?


Solution

  • I think the following should work. I'm not sure about win32 though.

    if [[ "$OSTYPE" == "linux-gnu"* ]]; then
            # ...
    elif [[ "$OSTYPE" == "darwin"* ]]; then
            # Mac OSX
    elif [[ "$OSTYPE" == "cygwin" ]]; then
            # POSIX compatibility layer and Linux environment emulation for Windows
    elif [[ "$OSTYPE" == "msys" ]]; then
            # Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
    elif [[ "$OSTYPE" == "win32" ]]; then
            # I'm not sure this can happen.
    elif [[ "$OSTYPE" == "freebsd"* ]]; then
            # ...
    else
            # Unknown.
    fi