如何在 Linux Shell 中使用光标来导航命令

如何在 Linux Shell 中使用光标来导航命令

我在 Windows 上运行 Docker 容器,以便我能够在需要时使用 Linux 来完成某些项目。使用 CLI 时,我无法使用光标键导航命令/命令历史记录。我希望按向上/向下箭头导航之前运行的命令,并按向左/向右箭头允许我将光标移动到当前所选命令的一部分,以便我从该点进行编辑。相反,当我按下光标键时,我会看到字符输出到控制台(即上、下、左、右分别解析为^[[A^[[B^[[C^[[D)。

我是否缺少一个选项/安装来启用预期的行为?

我看过有关的信息设置-o;但我没有历史记录:

# set -o | grep history
# set -o
Current option settings
errexit         off
noglob          off
ignoreeof       off
interactive     on
monitor         on
noexec          off
stdin           on
xtrace          off
verbose         off
vi              off
emacs           off
noclobber       off
allexport       off
notify          off
nounset         off
priv            off
nolog           off
debug           off
# set -o history
/bin/sh: 21: set: Illegal option -o history

使用的bash版本是4.4.20:

# bash --version
GNU bash, version 4.4.20(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

答案1

根据 SteelDriver 的评论,我误解了我所在的 shell,因为运行bash --version给出了输出,我假设我在 bash shell 中。事实上,我只是用命令行参数调用了 exe。我一直在用/bin/sh.

启用预期光标行为的解决方案是切换到支持它的 shell;即bash。要做到这一点;我只需要运行命令:bash

根据 @StefanSkoglund 的评论,要永久更改内容,请运行chsh -s /bin/bash.

您还可以通过以下方式列出有效的登录 shell:cat /etc/shells

您可以通过以下方式查看每个用户的默认 shell:cat /etc/passwd;或更好; getent passwd

相关内容