快速摘要:
我在使用磅(‘m)符号时遇到了一些麻烦,而在一个巴什壳。
当我按下get键时,我会得到一个新行,而不是get符号。为了确切地理解我的意思,我制作了一个屏幕记录,可以在这里观看:
https://drive.google.com/open?id=0B-kN4kPOjEdDUENDbjJ3ekJRQ3M
在屏幕记录中,我尝试键入以下几行:
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?'每次按下no键时,都会启动新行,而不打印no符号。
详细信息:
这是一个运行在基于这个MySQL Dockerfile:https://github.com/docker-library/mysql/blob/eeb0c33dfcad3db46a0dfb24c352d2a1601c7667/5.7/Dockerfile的Docker容器中的bash。
Docker主机是一个Ubuntu16.04AzureVM,运行Docker版本1.13.1,Build092cba3。
在Mac OSX上运行的本地Bash shell不会出现此问题。
如果在运行Docker的本地Mac上运行基于上述Dockerfile的容器,问题就会发生。
即
docker run -it --name=test mysql:latest /bin/bash我尝试搜索由of符号引起的Docker和/或Bash的实例,但是没有效果。
从我的研究来看,my符号似乎不是一个特殊的字符。
有人能弄清楚是什么原因造成的吗?
注释中的以下问题:
我有一个插在苹果Mac电脑上的英国键盘,但是当我把SSH从我的Android手机插入目标服务器时,我也会遇到同样的问题。
我使用Shift-3来产生£符号.
如果在复制后粘贴it符号,则会出现相同的行为。
当我按下Ctrl键时,就会将字符^V打印到控制台上。
按压Alt-#似乎不会产生任何结果。
当我启动命令cat -v,然后在返回键后面键入by符号时,将得到以下shell输出:
root@090bee3ba719:/# cat -v
£
M-BM-#发布于 2017-02-13 15:20:02
这看起来像您的键盘输入是以UTF-8的形式输入(在其中,as被编码为两个字节,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上使更改永久(这通常归结为要编辑哪个配置文件)。
https://stackoverflow.com/questions/42206638
复制相似问题