web-dev-qa-db-ja.com

バックスペース、タブがターミナルで機能しない(sshを使用)

私のアカウント(Sudo権限付き)でDebianを使用して別のマシンにsshすると、バックスペースキーを押すと厄介な記号が生成されます。また Tab & del キーも機能しません。

一方、私は同じマシンに別のアカウントも持っています。このアカウントでSSHを実行すると、そのターミナルは完全に正常に動作します。なぜこれが起こっているのか理解できませんでした。

42
gopi1410

私は以前にそのような問題を見たことがあります。

バックスペースを例にとると、リモートホストは一部の文字が「消去/バックスペース」として使用されることを期待していますが、ターミナルでバックスペースを押すと、ターミナルプログラムはリモートホストにいくつかの文字を送信します。端末プログラムによって送信された文字については、この問題が発生します。したがって、簡単な修正は以下のとおりです:

  1. リモートホストでコマンド#stty -aを実行し、出力で消去コードと予想されるものを見つけます。 erase=^?と言います。
  2. ターミナルで次のように入力します Ctrlv バックスペースを押します。 「消去」として送信されたコードが表示されます。 ^Hだとしましょう。
  3. リモートホストで、#stty erase ^Hを実行します。
    (注:使用 Ctrlv + Backspace、手動で^を入力しないでください)

上記と同じ方法でタブの問題を修正できます。

40
Derui Si

「stty」ソリューションのほかに、「TERM」ソリューションを試すことができます。

ターミナル(PuTTY、solaris dterm、debain xterm、you-name-it)からDebianにsshします。この端末アナウンス機能(BackspaceやTabなどのキーを含む)は、TERM環境変数を介して行います。

したがって、sshをunixホスト(debianや他のホストに依存しない)にした後、端末に応じてTERM変数を設定します。シェルとしてbashを使用し、ターミナルとしてvt100を使用していることを考慮してください。

export TERM=vt100

ps:TERMはsshを介して自動的にアナウンスされるべきですが、状況によってはこの魔法は失敗します。

40
paul

これは、デフォルトのシェルがshであるためです。bashを使用するには、シェルからbashを実行するだけです。

bash

bashをデフォルトのシェルとして設定するには:

chsh -s /bin/bash 

または

Sudo chsh -s /bin/bash yourusername
17
iceflame

シェルが/bin/shではなく/bin/bashに設定されている可能性があります

7
jm.

私は通常、これを使用して、端末のファンキーな文字出力を修正します。すべての特殊文字をデフォルト値にリセットします。

stty sane

Sttyのmanページから:

creadと同じ-ignbrk brkint -inlcr -igncr icrnl -iutf8 -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echol echok echoo echoe -xcase -tostop -echoprt echoctl echoke、すべての特殊文字をデフォルト値に

7
David Morales

ポールの答えに加えて、カラフルな出力を保持する機能を維持したい場合は、xterm-88colorを使用できます。

echo 'export TERM=xterm-88color' >> ~/.bashrc
source ~/.bashrc
2
beenotung
# stty -a
speed 38400 baud; rows 34; columns 134; line = 0;
intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D; eol = <undef>; eol2 = 
<undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff - 
iuclc -ixany imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl 
echoke

私のホームキーは^ [[1〜を出力します。@ Derui Siのソリューションに従って、私のバックスペースキーはうまく機能していて、ホームキーに対して何をすべきかわかりません。

1
Aditya

このコマンドを試してください

stty sane

端末回線の設定が壊れていると思います。このコマンドはすべてをデフォルトにリセットします。

0
Aravind Ekan