获取计算机名称跨平台?

获取计算机名称跨平台?

我正在为我的计算机创建一条登录消息,/etc/bashrc并希望向计算机打招呼并显示计算机的名称。

这是我的代码:

# (system stuff here)
echo "Welcome, $(whoami)."

当我login对任何用户使用时,它都会给我带来我所期望的:Welcome, avgjoe例如。

但是,我想让它输出Welcome, avgjoe, to Tower of Nix- 我的计算机名称已(通过系统偏好设置)设置为“Tower of Nix”。

那么,如果不对其进行硬编码(即echo "Welcome, $(whoami), to Tower of Nix."),我如何获取计算机的名称?

我已经尝试过了hostname,但是输出了192.168.2.13

事实证明,scutil --get ComputerName它确实实现了我的要求(输出Tower of Nix),但是当我查看的手册页时scutil,它指出:

历史

scutil命令出现在 Mac OS X Public Beta 中。

因此它可能不适用于所有操作系统,例如 Linux、*BSD 等。

我的问题:如何获取任意计算机上的计算机名称(或几乎任何)UNIX 的衍生版本?

答案1

许多但不是所有 Unix 类系统uname都有这个n选项

    uname -n

答案2

Mac OS X 是少数允许您存储和检索与计算机的 IP 主机名完全不同的名称的类 Unix 系统之一。最好对 ; 的调用进行特殊处理scutil。如果失败,请退回到更标准的hostname

echo "Welcome, $(whoami), to $(scutil --get ComputerName 2>/dev/null || hostname)."

答案3

GNU/Linux 上的主机名只是位于一个文件内。例如,我可以通过更改 .slackware 中的一行来编辑我在 Slackware 上的主机名/etc/HOSTNAME

我的建议就是将该文件连接到 bashrc 中的命令中。如果您的系统中没有主机名文件,/etc您只需创建一个即可。另外,您可以使用$USERnot ,whoami因为该变量USER是用登录者的姓名填充的。

该命令如下所示:

echo "Welcome, $USER, to `cat /etc/HOSTNAME`"

相关内容