bash
和$HOSTNAME
之间有什么区别zsh
吗$HOST
?
如果不是,是否有历史原因bash
选择$HOSTNAME
何时tcsh
使用zsh
变量$HOST
?
答案1
部分答案,即变量的内容:
所有变量的值都来自调用gethostname(2)
:
tcsh
sh.c:main()
默认:unknown
。bash
外壳.c:shell_initialize()
。默认:??host??
zsh
参数.c:createparamtable()
默认值为:
tcsh
:unknown
。bash
:??host??
zsh
: (无效的)
有趣的是,zsh
不检查返回值!
答案2
$HOSTNAME
在 1996 年 12 月发布的 2.0 中被添加到 bash。
变更日志称其于 1995 年 8 月 1 日实施。
我只能假设作者认为 HOSTNAME 是一个比 HOST 更好的名称,并且考虑到 1990 年的 bash 1.05 中更早地添加了一个变量(如) bash
,我可以理解他们的观点。bash
$HOSTTYPE
tcsh
$HOSTTYPE
它本身似乎有一段更加扭曲的历史。
在 tcsh 6.05(1994 年 6 月)发行说明中,您会看到:
- $HOSTTYPE 即将消失。新变量 $OSTYPE、$MACHTYPE、$VENDOR 与 gnu 变量类似。
那些消除了关于什么的歧义类型HOST
我们正在谈论变量名称中的with 。
然而,$HOSTTYPE
最终却始终没有离开tcsh
。
bash
1.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