我在 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
。