Pound符号(£;)导致docker容器内Bash shell中的新行

Pound符号(£;)导致docker容器内Bash shell中的新行,bash,shell,docker,Bash,Shell,Docker,快速总结: 我在Bash shell中使用英镑符号时遇到一些问题 当我按£键时,我得到的是一个新行,而不是£符号。为了准确理解我的意思,我制作了一个屏幕录制,可以在这里查看: 在屏幕录制中,我尝试键入以下行: export P='Secure$%£Password' echo 'I will now type a GBP pound symbol: £' I will now press the pound symbol 3 times £££ echo 'What is going on?'

快速总结:

我在Bash shell中使用英镑符号时遇到一些问题

当我按£键时,我得到的是一个新行,而不是£符号。为了准确理解我的意思,我制作了一个屏幕录制,可以在这里查看:

在屏幕录制中,我尝试键入以下行:

export P='Secure$%£Password'
echo 'I will now type a GBP pound symbol: £'
I will now press the pound symbol 3 times £££
echo 'What is going on?'
每次按下【】键时,都会启动一个新行,并且不会打印【】符号

详细信息:

这是一个基于MySQL Dockerfile在Docker容器中运行的bash shell:

Docker主机是一个Ubuntu 16.04 Azure虚拟机,运行Docker版本1.13.1,构建092cba3

在Mac OSX上运行的本地Bash shell上没有出现此问题

如果在运行Docker的本地Mac OSX上运行基于上述Dockerfile的容器,则会出现问题

i、 e

我曾尝试在谷歌上搜索Docker和/或Bash的实例,它们的新行是由£symbol引起的,但没有效果

根据我的研究,符号似乎不是一个特殊的字符

有人能解释一下这可能是什么原因吗

评论中问题的其他详细信息:

我有一个英国键盘插入苹果Mac;然而,当我从我的Android手机SSH进入目标服务器时,我也会遇到同样的问题

我使用Shift-3生成符号

如果复制后粘贴符号,则会得到相同的行为

当我按下Ctrl-V时,我会将字符^V打印到控制台

按Alt-#似乎不会产生任何结果

当我启动cat-v命令,然后在返回键后键入£symbol时,我得到以下shell输出:

root@090bee3ba719:/# cat -v
£
M-BM-#

这看起来您的键盘输入是UTF-8(其中,%编码为两个字节,
C2
A3),但您的shell需要拉丁语-1或类似的格式

具体而言,第二个字节(
A3
)等于163=128+35。
#
的ASCII码是35,移位128被解释为“meta”。因此bash将
A3
视为
M-#
,默认情况下,它绑定到
insert comment
命令。此命令在行首插入一个
#
,然后就好像键入了换行符一样(您可以在演示视频中看到这两种效果)


修复此问题可能与更改某些区域设置变量一样简单。请尝试
echo$LANG
。这是您的默认区域设置。典型的输出类似于
en_US
en_GB
。如果是这样,请尝试
LANG=en_US.utf8
(即在末尾添加
.utf8
),然后再次运行
bash
(在同一会话中递归)并再次测试。如果这解决了问题,那么您就要弄清楚如何在Debian Linux(大概是)上使更改永久化(通常归结为要编辑的配置文件)。

当您按CTRL-v键时会得到什么?您使用什么键来获得磅符号
Shift-3
?您的症状与
insert comment
readline命令相匹配,默认情况下该命令绑定到
Alt-#
#
是美国键盘上的
Shift-3
。@melpomene,我用Shift-3来获得英镑符号。当我按下CTRL-v时,控制台会打印^v。Alt-#似乎什么都没做。我使用的是一个插入苹果Mac的英国PC键盘,然而,当使用基于android的操作系统到Ubuntu虚拟机的SSH时,我看到了同样的行为。如果将符号复制并粘贴到bash shell中,也会出现这种行为。我将用这些问题的答案更新问题。谢谢你,DanL。如果你先启动
cat-v
,然后在其中键入
输入
,会发生什么?(使用
CTRL-d
CTRL-c
停止
cat
。)
root@090bee3ba719:/# cat -v
£
M-BM-#