我正在运行 Ubuntu 12.04 LTS,出于某种原因,没有终端历史记录(点击向上箭头查看上一个命令),也没有自动完成功能(点击 Tab 键)。这些出色的功能在我过去使用的任何 UNIX 机器上都一直有效。我查看了终端的键盘快捷键菜单,没有看到任何内容。
- 我如何才能让向上的箭头给我上一个终端命令?
- 如何让 Tab 键执行自动完成功能?
提前致谢!
编辑:我很确定我正在使用bash
,echo $SHELL
返回/bin/sh
。我在本地机器上运行它。我不确定如何运行历史记录,但当我这样做时,ls -a
我没有看到通常的历史记录文件(我认为它被称为 .history?)
答案1
你不是在使用bash
,而是在使用sh
。这意味着什么取决于你的系统,在 Debian 和 Ubuntu 上,/bin/sh
是到 的符号链接,dash
因此这就是您的默认 shell。dash
没有您想要的功能,您需要切换到另一个 shell,例如bash
或zsh
。您可以使用以下命令执行此操作chsh
:
$ chsh
Password:
Changing the login shell for terdon
Enter the new value, or press ENTER for the default
Login Shell [/bin/sh]: /bin/bash
现在,您打开的每个新终端都将运行bash
,并且向上的箭头将为您提供历史记录。
sh
即使在链接到 的系统上bash
,两者也不等同。如 中所述man bash
:
If bash is invoked with the name sh, it tries to mimic the startup
behavior of historical versions of sh as closely as possible, while
conforming to the POSIX standard as well. When invoked as an interac‐
tive login shell, or a non-interactive shell with the --login option,
it first attempts to read and execute commands from /etc/profile and
~/.profile, in that order. The --noprofile option may be used to
inhibit this behavior. When invoked as an interactive shell with the
name sh, bash looks for the variable ENV, expands its value if it is
defined, and uses the expanded value as the name of a file to read and
execute. Since a shell invoked as sh does not attempt to read and exe‐
cute commands from any other startup files, the --rcfile option has no
effect. A non-interactive shell invoked with the name sh does not
attempt to read any other startup files. When invoked as sh, bash
enters posix mode after the startup files are read.