Shell ESXi 主机下的别名扩展不会自动完成 - 并且 - 检测是否 运行 交互

Shell alias expansion under ESXi host does not auto complete - AND - detecting if running interactively

由于 ESXi 未附带 bash,我正在寻找一个 .sh 文件来为通过 ssh 连接时的常用命令设置一些自定义别名。

在 RHEL 等其他发行版上,我可以键入别名的一部分,然后按 Tab 键自动完成。这在 ESXi 7.x.

下似乎不起作用

是否有我可以打开的开关或其他东西使自定义别名自动完成工作,或者这只是 ESX 提供的 shell 的限制? 注意:如果键入 l<tab>,那么我会得到以 L.

开头的内置命令

另外,当我讨论 ESXi 的话题时 shell… 在 RHEL 上,我的 .bashrc 文件中有这一行

[[ $- != *i* ]] && return 

此代码的目的是,如果当前会话不是 运行 交互,则 return 否则 运行 其余代码。

当我在 esx 上 运行 时,出现错误 sh: *i*: unknown operand。 shell 不支持这种子字符串方法吗?

如果我 运行 echo $- 那么我得到“smi”作为输出。

谢谢

您可能知道 ESXi 提供 ash(不是 bash)和 Busybox。尽管 Busybox 包含 ash,但我记得 ESXi 使用自定义构建的可执行文件(检查 /bin/ash 指向或不指向的位置)。维基百科关于 ash 的文章很好地概述了 ash 及其极简主义哲学。 Shell 历史最初不包括在内,自动完成绝对被认为是一个不错的选择,但没有成功。很抱歉成为坏消息的传递者。