bash $HOSTNAME 和 tcsh/zsh $HOST 之间的区别

bash $HOSTNAME 和 tcsh/zsh $HOST 之间的区别

bash$HOSTNAME之间有什么区别zsh$HOST

如果不是,是否有历史原因bash选择$HOSTNAME何时tcsh使用zsh变量$HOST

答案1

部分答案,即变量的内容:

所有变量的值都来自调用gethostname(2):

默认值为:

  • tcsh: unknown
  • bash:??host??
  • zsh: (无效的)

有趣的是,zsh不检查返回值!

答案2

$HOSTNAME在 1996 年 12 月发布的 2.0 中被添加到 bash

变更日志称其于 1995 年 8 月 1 日实施。

$HOST被添加到1991年发布的zsh-2.0中

原来已经在tcsh1987年的事了

我只能假设作者认为 HOSTNAME 是一个比 HOST 更好的名称,并且考虑到 1990 年的 bash 1.05 中更早地添加了一个变量(如) bash,我可以理解他们的观点。bash$HOSTTYPEtcsh

$HOSTTYPE它本身似乎有一段更加扭曲的历史。

在 tcsh 6.05(1994 年 6 月)发行说明中,您会看到:

  • $HOSTTYPE 即将消失。新变量 $OSTYPE、$MACHTYPE、$VENDOR 与 gnu 变量类似。

那些消除了关于什么的歧义类型HOST我们正在谈论变量名称中的with 。

然而,$HOSTTYPE最终却始终没有离开tcsh

bash1.14.0于1994年6月推出$OSTYPE,但$MACHTYPE在2.0之前没有添加,并且$VENDOR从未添加到bash,所以我不确定是什么gnu 的以上指的是。

zsh最初也有$HOSTTYPE,但它被删除了,1995 年在 zsh-2.6-beta 中被$OSTYPE,$MACHTYPE和取代$VENDOR

无论如何,在笔记本电脑 amd64 PC 上运行的 Ubuntu GNU/Linux 系统上看,这些变量的值在 shell 之间差异很大,而且看起来它们的语义在bash版本之间也有很大差异。

您会注意到,bash还决定脱离主机名所在的tcsh/提示扩展(对于第一个点之前的部分)并选择相反(相当于)。zsh%M%m\h%m

相关内容