我对 Linux 不太熟悉,并且有以下疑问:客户为我提供了一个 Ubuntu 18.04.3 LTS 虚拟机,我通过 SSH 访问它。(我使用 MobaxTerm 作为 SSH 客户端,但这应该不是问题。)使用的 shell 是sh
。
问题是,在 shell 中,自动完成功能无法像我预期的那样使用该Tab键工作。
它只是放置了经典的制表符和空格。
为什么?我该如何更改此配置?
答案1
sh
dash
由Ubuntu提供。许多 shell(包括bash
和zsh
)都具有复杂的功能,便于交互使用。dash
故意设计得非常简约,不提供此类功能。特别是,它不提供制表符补全功能。
即使是精简版的 Ubuntu 系统通常也会bash
安装它,因为它被视为必不可少的软件包——我们应该能够假设它存在,即使没有其他软件包依赖它。通常bash
是 Ubuntu 上的默认用户 shell——即新用户默认获得的登录 shell——尽管可以重新配置。
我建议你使用bash
或其他适合交互使用的 shell。你可以bash
运行以下命令查看该 VM 中是否可用:
bash
假设您的$PATH
设置合理,则bash
在可用时将运行。您可以确保制表符补全功能有效bash
(应该可以,但没有理由不检查),然后通过以下两种方法之一在将来获得制表符补全功能:
bash
当您需要制表符完成和其他bash
功能时,只需运行即可。bash
您可以使用以下命令将您的用户帐户的登录 shell 更改为chsh
。
请注意,还有一个单独的软件包,bash-completion
通常也会安装。它提供可编程的制表符补全 - 即根据上下文变化的制表符补全,例如,了解命令的标志和其他语法。可能已bash
安装但未安装bash-completion
。
(要查明是否安装了任何特定的软件包bash
--、bash-completion
或其他任何软件包,您可以使用。有关软件包的更多信息,您可以使用和。)apt list package-name
apt show package-name
apt policy package-name
答案2
fish shell 会自动显示可能的命令。按TAB将显示所有可能的命令。以下是我从sudo ap
+获得的结果TAB:
shri@shri ~ [1]> sudo apt-get install pulseaudio-module-bluetooth
apt (Command-line interface)
aptd (Package managing daemon proving a D-Bus interface)
aptdcon (Command line client for aptdaemon)
aptitude (High-level interface to the package manager)
…and 16 more rows