Pound符号(£;)导致docker容器内Bash shell中的新行
快速总结: 我在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?'
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-#