BASH:�ls:错误输入“ñ”时未找到命令

BASH:�ls:错误输入“ñ”时未找到命令

当我错误地输入“ñ”(期望输入任何命令)然后将其删除并输入正确的字母时,输出会返回带有特殊字符的命令,显然 shell 无法识别该命令,我必须重新输入小心不要再次输入“ñ”字符。

例如

Wrong typing       @tachomi:~$ ñs
Correct typing     @tachomi:~$ ls
Output             �ls: command not found
  • 为什么会出现这种情况,因为我删除了错误的字符?
  • 我该如何解决这个问题?

我认为这种字符ñ , '等与外壳不兼容,这是“内存”保留它无法识别的东西的原因,但我想确定为什么会发生这种情况。

我正在使用 bash shell

答案1

您有一个能够理解多字节编码(可能是 UTF-8)的终端(或终端仿真器),但 shell 却不能。尝试将环境变量设置LANGC.UTF-8.或者跑去locale -a找另一个可能的值来尝试。

答案2

由于所有的帮助,我可以找到如何解决这个问题。

主要问题是由于 UTF-8 编码造成的,服务器没有按照注释中所述进行配置。

引用评论:

[@Rmano]:UTF-8ñ是一个两个字节字符

[@jimmij]:由于某种原因,退格符只能删除其中一个

[@aecolley]:尝试将环境变量设置LANGC.UTF-8

其固定如下:

Find your current LANG    $ locale -v | grep 'LANG='
Output                    LANG=en_US
Change                    $ sudo LANG=en_US.UTF-8
or
Change                    $ sudo vim /etc/default/locale
Edit                      ~LANG="en_US.UTF-8"

重新启动您的终端会话。

答案3

您可以运行以下代码行:

if [[$(locale -v | grep 'LANG=') != *.UTF-8]]; then sudo $(locale -v | grep 'LANG=').UTF-8; fi

如果字符代码尚不存在UTF-8,则将字符代码设置为UTF-8当前字符代码的版本。这样,shell 将理解 UTF-8 字符,并正确地退格它们。

相关内容