gpt4 book ai didi

bash - 英镑符号 (£) 在 docker 容器内的 Bash shell 中产生新行

转载 作者:行者123 更新时间:2023-12-02 19:09:32 27 4
gpt4 key购买 nike

快速总结:

我在 Bash shell 中使用英镑 (£) 符号时遇到了一些问题。

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

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?'

每次按下 £ 键时都会开始一个新行,并且不会打印 £ 符号。

详情:

这是一个在基于这个 MySQL Dockerfile 的 Docker 容器中运行的 bash shell:
https://github.com/docker-library/mysql/blob/eeb0c33dfcad3db46a0dfb24c352d2a1601c7667/5.7/Dockerfile

Docker 主机是运行 Docker 版本 1.13.1、内部版本 092cba3 的 Ubuntu 16.04 Azure VM。

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

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

IE。
docker run -it --name=test mysql:latest /bin/bash

我尝试在谷歌上搜索 Docker 和/或 Bash 的实例,这些实例具有由 £ 符号引起的新行,但无济于事。

在我的研究中,£ 符号似乎不是一个特殊字符。

任何人都可以阐明可能导致这种情况的原因吗?

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

我将英式键盘插入 Apple Mac;但是,当我从我的 Android 手机通过 SSH 连接到目标服务器时,我遇到了同样的问题。

我使用 Shift-3 来生成 £ 符号。

如果在复制后粘贴 £ 符号,我会得到相同的行为。

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

按 Alt-# 似乎没有产生任何东西

当我启动命令 cat -v 然后键入 £ 符号后跟返回键时,我得到以下 shell 输出:
root@090bee3ba719:/# cat -v
£
M-BM-#

最佳答案

这看起来您的键盘输入是以 UTF-8 格式输入的(其中 £ 被编码为两个字节, C2 A3 ),但是您的 shell 需要 Latin-1 或类似的东西。

特别是,第二个字节 (A3) 等于 163 = 128 + 35。# 的 ASCII 码是 35,移位 128 被解释为“元”。因此 bash 看到 A3M-# , 绑定(bind)到 insert-comment默认命令。此命令插入 #在该行的开头,然后就像输入了换行符一样(您可以在演示视频中看到这两种效果)。

解决这个问题可能就像更改一些语言环境变量一样容易。试试 echo $LANG .这是您的默认语言环境。典型的输出类似于 en_USen_GB .如果是这样,请尝试 LANG=en_US.utf8 (即在末尾添加 .utf8)并运行 bash再次(递归地,在同一 session 中)并再次测试。如果这样可以解决问题,您将弄清楚如何在(大概)Debian Linux 上使更改永久化(通常归结为要编辑的配置文件)。

关于bash - 英镑符号 (£) 在 docker 容器内的 Bash shell 中产生新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42206638/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com