📅  最后修改于: 2023-12-03 15:23:00.301000             🧑  作者: Mango
在编写 Shell 脚本时,常常需要区别处理 Linux 和 macOS 系统上的命令执行。本文将介绍如何通过 Shell 脚本判断当前执行环境是 Linux 还是 macOS。
Linux 和 macOS 在系统变量上有所区别,可以通过以下变量进行判断:
lsb_release -si
或 /etc/os-release
sw_vers -productName
或 uname -s
下面是代码实现:
#!/bin/bash
if [[ "$(uname)" == "Darwin" ]]; then
echo "当前环境是 macOS"
elif [[ "$(expr substr $(uname -s) 1 5)" == "Linux" ]]; then
if [ -f /etc/os-release ]; then
echo "当前环境是 Linux"
. /etc/os-release
echo "Linux 发行版: $NAME"
elif type -p lsb_release >/dev/null 2>&1; then
echo "当前环境是 Linux"
echo "Linux 发行版: $(lsb_release -si)"
else
echo "当前环境是 Linux,但无法确定发行版"
fi
else
echo "当前环境不是 Linux 也不是 macOS"
fi
以上代码首先判断 $(uname)
的返回值是否等于 Darwin
,如果是则是 macOS 系统,否则判断$(uname -s)
字符串前5位是否等于 Linux
,如果是,则是 Linux 系统。在 Linux 系统中,进一步根据 /etc/os-release
文件或 lsb_release
命令判断具体发行版。