我正在开发一个简单的 bash 脚本,它应该能够在 Ubuntu 和 CentOS 发行版上运行(对 Debian 和 Fedora/RHEL 的支持将是一个加分项),我需要知道脚本正在运行的发行版的名称和版本(以触发特定操作,例如创建存储库)。到目前为止,我所得到的是:
OS=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./')
if [ -z "$OS" ]; then
OS=$(awk '{print $1}' /etc/*-release | tr '[:upper:]' '[:lower:]')
fi
if [ -z "$VERSION" ]; then
VERSION=$(awk '{print $3}' /etc/*-release)
fi
echo $OS
echo $ARCH
echo $VERSION
Run Code Online (Sandbox Code Playgroud)
这似乎有效,返回ubuntu
或centos
(我没有尝试过其他人)作为发布名称。但是,我有一种感觉,必须有一种更简单、更可靠的方法来解决这个问题——这是真的吗?
它不适用于 RedHat。/etc/redhat-release 包含:Redhat Linux 企业版 5.5 …
很多时候,我会通过 ssh 进入一个新客户端的机器来更改他们的网站配置,而无需对服务器配置了解太多。我已经看到了一些获取有关您正在使用的系统的信息的方法,但是是否有一些标准命令可以告诉我我使用的是哪个版本的 Unix/Linux 以及基本系统信息(例如它是否是 64 位系统)?与否),诸如此类?
基本上,如果你刚刚登录到一个盒子并且对它一无所知,你会检查什么东西,你会使用什么命令来做到这一点?