2017-02-13 69 views
1

快速摘要:英鎊符號(£)導致碼頭工人,容器內的Bash shell中新行

我在使用英鎊(£)符號,而在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?' 

每次£鍵被按下一個新行開始並且不打印£符號。

詳情:

這是一個bash shell的泊塢窗容器中運行基於這個MySQL Dockerfile: https://github.com/docker-library/mysql/blob/eeb0c33dfcad3db46a0dfb24c352d2a1601c7667/5.7/Dockerfile

泊塢窗主機是Ubuntu的16.04 Azure的虛擬機上運行多克爾版本1.13.1,建立092cba3。

該問題不會對我的本地Bash shell中運行,就會出現在Mac OSX如果我本地的Mac OSX運行泊塢窗,我運行基於上述Dockerfile容器確實發生

的問題。

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

我已經嘗試使用Google對具有引起£符號,但無濟於事新線泊塢和/或擊的實例。

£符號似乎不是我研究中的特殊字符。

任何人都可以闡明什麼可能導致這一點?

其他詳細信息如下的意見問題:

我有一個英國的鍵盤插入蘋果的Mac;但是,當我通過Android手機將SSH連接到目標服務器時,我遇到了同樣的問題。

我使用Shift-3來生成£符號。

如果複製後粘貼£符號,我會得到相同的行爲。

當我按下Ctrl-V時,我得到字符^ V印在控制檯上。

按下Alt-#似乎並沒有產生任何

當我啓動命令cat -v然後鍵入£符號,然後按回車鍵,我得到了下面的shell輸出:

[email protected]:/# cat -v 
£ 
M-BM-# 
+0

當你按下CTRL-v'''時,你會得到什麼? – melpomene

+0

你用什麼來確定磅符號的確切鍵? '按住Shift鍵3'? – melpomene

+0

您的症狀符合'insert-comment' readline命令,默認情況下它綁定到'Alt-#'。美式鍵盤上的'#'是'Shift-3'。 – melpomene

回答

2

這看起來像你的鍵盤輸入是以UTF-8格式(其中£編碼爲兩個字節,C2A3),但你的shell期待的是拉丁-1或類似的東西。

特別是,第二個字節(A3)等於163 = 128 + 35。#的ASCII碼是35,而128的移位被解釋爲「meta」。因此,bash將A3視爲M-#,默認情況下它綁定到insert-comment命令。該命令在行首插入#,然後就好像換行符一樣(您可以在演示視頻中看到兩種效果)。

解決這個問題可能與更改某些語言環境變量一樣簡單。嘗試echo $LANG。這是您的默認語言環境。典型的輸出類似於en_USen_GB。如果是,請嘗試LANG=en_US.utf8(即在末尾添加.utf8)並再次運行bash(遞歸地在同一個會話中)並再次測試。如果解決了這個問題,你就可以在Debian Linux上弄清楚如何使修改永久(通常歸結爲哪個配置文件可以編輯)。