端末でBackspace、Tab、Del、および矢印キーが機能しない(sshを使用)


44

自分のアカウントで(sudo権限を持つ)別のUbuntuマシンにsshすると、バックスペースキーを押すと、厄介な記号が生成されます。また、Tab、Del、および矢印キーは機能しません。

一方、同じマシン上に別のアカウントもあります。このアカウントを使用してsshを実行すると、端末は完全に正常に動作します。なぜこれが起こっているのかわかりませんでした。


私は同じ問題を抱えています-私のホストはWin7-64であり、私のリモートゲストシステムはどちらもUbuntu Server 10.04です。あるサーバーでは、キーは機能しますが、別のサーバーでは機能しません。
Mateng

追加情報:Putty / Kittyを使用してリモートマシンに入る
-Mateng

別のプログラムを使用してsshを試してみるか、ターゲットシステムの新しいプロファイルを作成できますか?
ベラク

私もcygwin(win 7)で問題に直面しました
-gopi1410

これが発生した場合、echo "$ TERM"と入力すると何が返されますか?
-david6

回答:


32

編集:参照:Matengの答え

Matengは、Bourne Shellを実行していると思われるという点で近いです。ただし、/etc/passwdファイルを直接編集しないでください。chsh代わりにコマンドを使用してみてください。

chsh -s /bin/bash

-sフラグは、新しいシェル(この場合はBash)をログインシェルにして、先に進みます。


スジは通ってるようだ。gopi1410が同意すれば、50人の担当者があなたのものです。
Mateng

@Mateng:同意し、回答へのリンクを追加して完了させます
-gopi1410

1
ルートとして実行:sudo chsh -s /bin/bash
KrisWebDev

1
@ 3年以上後、私のために働いた。どうもありがとうございます!あなたは素晴らしいです!
goncalotomas

17

次の変更により、問題は解決しました。最初に、実行されているシェルを確認しました。

$ echo $0

返された:

/bin/sh

Ubuntuforumsのこの投稿を読んで、シェルを変更し/bin/bashて解決策をもたらしました。そこで、ユーザー設定を次の/etc/passwdように編集しました。

johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash

ログアウトしてから、再度ログインしました。奇妙なことに、次のように入力して、シェルを手動で切り替える必要がありました(キャッシュがアクティブだったのかもしれません)。

/bin/bash

出来上がり!
[配布の更新により問題が発生しました。]


13

最初にsshするときに、次の2つのコマンドを試してください

stty sane
export TERM=linux

この問題を正確に修正するために、いくつかのマシンでこれを行う必要があります


1
私はそれを試してみましたが、問題は解決し
ません

1
LinuxではなくVT100として用語を試しましたか?何についてstty erase <backspace>(あなたが実際にキーを打つ。ここで、<バックスペース>である)
ドレイクClarris

(上矢印):で$ stty erase '^[[A' stty: invalid integer argument '\033[A'。[Backspace]を使用:$ stty erase '^?'動作します。[Tab]の場合:$ stty erase ' ' エラーはありませんが、[Backspace]は奇妙な動作に戻ります。
-Mateng

試しましたexport TERM=VT100が、役に立ちませんでした。
Mateng

1
stty tab0助けにならない。xtermの何らかの一般的な再構成が必要だと思います。または、キーマップが間違っていますか?
Mateng

5

この問題を解決する最も簡単な方法の1つは、コマンドラインインターフェイスプロンプトで/ bin / bashと入力することです。

$ / bin / bash

前述のコマンドは、サブプロセスとして既存のシェルの上にBourne Againシェルを実行します。これには、より多くのリソースを使用するというデメリットがありますが、編集する必要はなく、特別な権限は必要ありません。たとえば、最近のKubuntuバージョンでは、デフォルトの/ bin / dashコマンドラインシェルインターフェイスの上で/ bin / bashセッションを開始します。

ただし、変更を永続化するには、/ etc / passwdファイルを編集し、ユーザーに対応する行の最後の「:」文字の後にデフォルトシェルを/ bin / bashに追加/編集/交換します。ただし、このファイルを編集するには、管理者権限が必要です。


1

「Gbnomeターミナル」は「xterm」を正確にエミュレートしません。

from:Wikipedia >> GNOMEターミナル

GNOMEターミナルはxtermターミナルエミュレータをエミュレートし、同じ機能のいくつかを提供します。


問題と解決策に関する論文はここにあります:

Linux Backspace / Delete mini-HOWTO

すべてのLinuxユーザーは、遅かれ早かれ、コンソールとXでBackspaceキーとDeleteキーを使用することが不可能に思われる状況に陥りました。このホワイトペーパーでは、これが発生する理由を説明し、解決策を提案します。ここで示されている概念は、本質的にディストリビューションに依存しません。各ディストリビューションのシステム構成ファイルの内容が大きく異なるため、必要に応じて読者に自分の修正を考えるのに十分な知識を与えようとします。

Backspaceキーは1文字戻り、カーソルの下の文字を消去する必要があると思います。一方、Deleteキーはカーソルの下の文字を移動せずに削除する必要があります。ほとんどのキーボードはBackspaceキーの左(←)を指す矢印を備えているにもかかわらず、2つのキーの機能を交換する必要があると思われる場合は、このペーパーではすぐに解決できるわけではありませんが、ここに記載されている説明が役立つ場合があります。

最も簡単な解決策(ここで機能する可能性があります)は、bash $ export TERM = gnomeを使用することです。


1

rootユーザーとして、ユーザーの/ etc / passwdファイルを編集し、/ bin / shから/ bin / bashに変更します

hdfs:x:1020:1001 :: / home / hdfs:/ bin / sh to hdfs:x:1020:1001 :: / home / hdfs:/ bin / bash

これは私のために働いた。


1

上記のすべてに加えて(このリンク)からのメモを試しましたが、成功しませんでした。vimがインストールされていることを確認してください。

通常、vimではなくviを使用します。そこで、vimをインストールしました。

$ sudo apt-get install vim

その後、viを実行すると、キーボードストロークが正常に動作し始めました。次の出力を見ると、インストール後にviがvimのエイリアスになったようです。

$ ls -al /etc/alternatives | grep vi 
lrwxrwxrwx   1 root root    18 Jan 13 09:38 vi -> /usr/bin/vim.basic

0

これは、キーボードとの互換性の問題、つまりホストシステムでの解釈方法です。コマンドモードのviエディターで移動するには、jまたはhを使用する必要がある場合があります。矢印は機能しません。

その特定のユーザーのホストシステムのプロファイル設定->互換性を確認します。


0

さて、これは言うごとに「解決策」ではないことを知っています、そしてそれはあなたの多くを助けないかもしれませんが、うまくいけばそれはあなたの少なくとも1人を助けるでしょう。それは私の問題を解決しました。

私の6か月前はキーボードを叩き、矢印キーはDebianボックスへのパテセッションで動作しなくなりました。彼らは他のどこでも動作しました(パテ以外のすべてのプログラム)。グーグルで検索してここに着陸した後(このタブを閉じようとしていましたが、解決しませんでした)。私は何かを試しました。同じボックスへの新しいsshセッションを開き、矢印キーが機能しました。スクリーンセッションに参加しましたが、機能しませんでした。そのため、矢印キーを無効にする現在のスクリーンセッションに関連する何かが発生しました。残念なことに、私は大きなプロジェクトの途中で(スクリーンセッションで28個のウィンドウを開いていました)、セッションを閉じたくなく、28個のウィンドウすべてで場所を失いました。

そう..

bashシェルで、Ctrl +上、下、左、右、ALT +上、下、左、右、SHIFT +上、下、左、右、CTRL + ALT +上、下など、考えられるすべての組み合わせを試しました、左、Ctrl + Shift +上、下、左、右など。まだ運が悪かったので、WindowsメニューとWindowsアプリキーも上下、左右に試しました。

今、私の矢印は再び機能します!上にあるものと矢印キーの組み合わせの1つに関する何かがそれを修正しました。


0

上記の答えはどれも私の同じ問題を解決しませんでした。つまり、Ubuntu(ここではncurses-6.0を備えたubuntu-17.10)にリモートで接続した後、バックスペースまたは同様のキーを使用できません。

最終的にterminfoの問題になります。基本的に、私のgnome-terminalはそれがxterm-256color端末(sshによってリモートにエクスポートされるTERM変数を介して)であると言いますが、リモートはxterm-256colorのterminfo構成を持っていません。

以下を行うことで問題が修正されました。

$ host:echo $ TERM
xterm-256color
$ host:infocmp> terminfo.src
$ host:tic terminfo.src
$ host:scp .terminfo / x / xterm-256color $ remote:/ usr / share / terminfo / x / xterm-256color

infocmpは、オプションなしで、環境変数$ TERMに端末のソースリストを作成します。したがって、infocmp -I $ TERMと同等です。

次に、結果のソースがチックを介してコンパイルされます。

最後に、対応するterminfo構成をリモートロケーションにインストールします。そのため、次に$ hostを介して$ remoteに接続すると、私の端末が認識されます。


コードブロックは何をしますか?何らかの形で用語構成を作成しますか?でも彼らのmanページは、スーパーinfocmpのデフォルトの効果にクリアされていない、またはこれが有用であるか、謎のコードを実行すると、最高のアイデアではない、いくつかの説明を持っていいだろう
Xen2050

@ Xen2050:各コマンドの説明を追加しました。オプションなしのinfocmpは、infocmp -I $ TERMと同等です。これはマニュアルページで説明されていますが、2つの部分で説明されています。指定された各ターミナルのソースリストを作成します。-terminfo名を使用しますtermnameが指定されていない場合、環境変数TERMがターミナル名に使用されます。
user1448926
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.