2008-11-19 127 views
3

這一直都給我帶來了困擾。當我使用ssh或telnet到Unix服務器(無論什麼味道)時,它總是能夠正確猜測我登錄的終端類型,因此鍵盤總是「正常」運行......即退格鍵可以工作。遠程Unix終端密鑰映射

但是當我已經成功登錄,常常猜測錯誤我使用的終端類型,使不正確的鍵映射 - 特別是退格鍵,這意味着我必須發出一個:

stty erase ... 

類型命令來解決它。

任何Unix專家都知道爲什麼會發生這種情況?

回答

2

我想你的意思是退格鍵,當你輸入你的用戶名和密碼,然後它停止工作,你已經登錄後正常工作。

最有可能的stty被設置爲別的東西在〜/ .profile或/ etc/profile(或另一個在登錄時執行的腳本)。

找到該文件並對該行進行註釋。

+0

是的,抱歉,我應該更加明確。這更多的是一個普遍的問題,而不是一個特定的平臺,但你是對的......它可能與/ etc/profile中的某些東西一樣簡單 – gnuchu 2008-11-19 13:03:43

0

您使用的是SSH/telnet軟件?

通過SSH登錄時,用戶名/密碼條目通常由客戶端處理,因此可能無關緊要。

我的猜測是TERM環境變量是由您的終端軟件設置不正確,例如。如果終端設置爲xterm等,則設置爲「vt100」。

1

在嘗試聯繫主機之前,安全shell(ssh)很可能會在客戶端軟件中詢問用戶名和密碼,所以它使用本地約定。

Telnet通常會與主機(遠程端)上的telnetd守護進程通信,主機將處理I/O。

很有可能您的終端程序正確配置爲與telnetd對話,但登錄後會運行各種可能影響終端設置的腳本(如stty erase '^H')。根據您連接的UNIX系統和您使用的shell,這可能是/ etc/profile,〜/ .profile,〜/ .bashrc,〜/ .kshrc等等的組合。

最好的辦法是找到配置文件類型文件(可能是〜/ .profile)的最後一個,並在其中放入一個stty erase 'X',其中X是終端程序的實際所需按鍵。

另外,配置文件類型只針對登錄shell運行,而其他配置則傾向於針對任何創建的子shell運行。