os() { uname="$(uname)" case $uname in Linux) echo linux ;; Darwin) echo macos ;; FreeBSD) echo freebsd ;; *) echo "$uname" ;; esac } distro() { local os_name os_name=$(os) if [ "$os_name" = "macos" ] || [ "$os_name" = "freebsd" ]; then echo "$os_name" return fi if [ -f /etc/os-release ]; then ( . /etc/os-release if [ "${ID_LIKE-}" ]; then for id_like in $ID_LIKE; do case "$id_like" in debian | fedora | opensuse | arch) echo "$id_like" return ;; esac done fi echo "$ID" ) return fi } distro_name() { if [ "$(uname)" = "Darwin" ]; then echo "macOS v$(sw_vers -productVersion)" return fi if [ -f /etc/os-release ]; then ( . /etc/os-release echo "$PRETTY_NAME" ) return fi uname -sr }