2015-03-03 29 views
0

我陷入了終端的奇怪行爲。 iTerm和我的OS X上的基本終端都不起作用。我只能輸入'A'而不是'a',但不能輸入'a'。如果我嘗試bash --noediting,那麼我可以鍵入'a',但使用起來非常不舒服。我檢查了我的~/.bashrc,~/.bash_profile並沒有發現任何對我來說很奇怪的東西。任何人都可以幫我嗎? 任何反饋意見。無法在終端中輸入「a」符號

回答

2

很可能你已經以某種方式引入了對a的readline綁定。

作爲第一步,嘗試這個辦法:(grep的說法是$"a",但你不能鍵入:))

bind -p | grep $'"\x61"' 

應該打印:

"a": self-insert 

如果那麼,那麼我的猜測是錯誤的,你需要去其他地方看看。如果沒有,那麼你需要修復它,你可以這樣做:

bind $'"\x61"':self-insert 

現在你需要找到你的bash啓動文件不正確的bind命令。我會從bind開始。它可能在來自其中一個文件的文件中。祝你好運。

您還應該檢查文件~/.inputrc,readline庫使用它來初始化它的綁定。

+0

好吧,在'綁定$'之後「\ x61」':self-insert'我可以輸入'a'。但是我在bash-startup文件中找不到「bind」。我也grepped源文件,但沒有'bind'命令。在'〜/ .bash_profile'中有一個shell腳本,它沒有'bind'命令,但是即使我在'〜\ .bash_profile'中註釋了這行,它也不會導致任何結果。我還應該嘗試檢查什麼? – 2015-03-03 09:15:24

+0

您是否檢查.inputrc?你有這個文件嗎? – rici 2015-03-03 15:03:32

+0

是的,我做到了。該文件中沒有什麼奇怪的。 – 2015-03-04 08:15:38

1

如果字母a已映射到其中一個控制字符,則可以獲得一些有趣的效果。嘗試stty -a,但你可能需要鍵入:

  • stty-控制-Va

得到-a到命令。這應該告訴你是這樣的:

speed 9600 baud; 65 rows; 135 columns; 
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl 
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo 
    -extproc 
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8 
    -ignbrk brkint -inpck -ignpar -parmrk 
oflags: opost onlcr -oxtabs -onocr -onlret 
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow 
    -dtrflow -mdmbuf 
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>; 
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^X; lnext = ^V; 
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T; 
    stop = ^S; susp = ^Z; time = 0; werase = ^W; 

,只是如果我的懷疑是正確的,cchars值之一是a

+0

不適用於我。 'cchars:discard =^O; dsusp =^Y; eof =^D; eol = ; \t eol2 = ;擦除= ^?; intr =^C; kill =^U; lnext =^V; \t min = 1; quit =^\;再版=^R; start =^Q;狀態=^T; \t stop =^S; susp =^Z;時間= 0; werase =^W;' – 2015-03-03 09:25:12