#!/bin/sh # Exit immediately if a command exits with a non-zero status set -e # Exit if an undefined variable is referenced set -u # OS Detection UNAME_OS=$(uname -s) case $UNAME_OS in Linux) OS_TYPE=$(. /etc/os-release 2>/dev/null && printf "%s" "$ID" || printf "unknown") ;; Darwin) OS_TYPE='darwin' ;; Unix) OS_TYPE=$(. /etc/os-release 2>/dev/null && printf "%s" "$ID" || printf "unknown") ;; Win32NT) OS_TYPE='windows' ;; *) OS_TYPE='unknown' ;; esac case $OS_TYPE in ubuntu) OS_TYPE_NAME='Ubuntu' ;; debian) OS_TYPE_NAME='Debian' ;; fedora) OS_TYPE_NAME='Fedora' ;; centos) OS_TYPE_NAME='CentOS' ;; rhel) OS_TYPE_NAME='Red Hat Enterprise Linux' ;; alpine) OS_TYPE_NAME='Alpine Linux' ;; arch) OS_TYPE_NAME='Arch Linux' ;; darwin) OS_TYPE_NAME='macOS' ;; windows) OS_TYPE_NAME='Windows' ;; *) OS_TYPE_NAME='Unknown' ;; esac printf '%s\n' "Detected OS Type: $OS_TYPE" printf '%s\n' "OS Name: $OS_TYPE_NAME"