내 계정으로 sudo 권한을 가진 다른 Ubuntu 시스템에 ssh를 넣을 때 백 스페이스 키를 누르면 어색한 기호가 생성됩니다. 또한 Tab, Del 및 Arrow 키가 작동하지 않습니다.
다른 한편으로, 나는 또한 같은 컴퓨터에 다른 계정을 가지고 있으며이 계정을 ssh하면 터미널이 완벽하게 작동합니다. 왜 이런 일이 일어나는지 알 수 없었습니다.
내 계정으로 sudo 권한을 가진 다른 Ubuntu 시스템에 ssh를 넣을 때 백 스페이스 키를 누르면 어색한 기호가 생성됩니다. 또한 Tab, Del 및 Arrow 키가 작동하지 않습니다.
다른 한편으로, 나는 또한 같은 컴퓨터에 다른 계정을 가지고 있으며이 계정을 ssh하면 터미널이 완벽하게 작동합니다. 왜 이런 일이 일어나는지 알 수 없었습니다.
답변:
편집 : 참조 : Mateng의 답변
Mateng은 아마도 Bourne Shell을 실행하고 있다고 생각합니다. 그러나 /etc/passwd
파일을 직접 편집해서는 안됩니다 . chsh
대신 명령을 사용해보십시오 .
chsh -s /bin/bash
-s 플래그는 새로운 쉘 (이 경우 Bash)을 로그인 쉘로 만듭니다.
sudo chsh -s /bin/bash
다음 변경 사항으로 문제가 해결되었습니다. 먼저 어떤 쉘이 실행 중인지 확인했습니다.
$ echo $0
어떤 결과를 반환 :
/bin/sh
Ubuntuforums 에서이 게시물을 읽으 면서 셸을 변경 /bin/bash
하여 솔루션 을 제공합니다. 그래서 사용자 설정을 다음 /etc/passwd
과 같이 편집 했습니다.
johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash
로그 아웃했다가 다시 로그인했습니다. 이상하게도 다음을 입력하여 수동으로 쉘을 전환해야했습니다 (일부 캐시가 활성화되었을 수도 있음).
/bin/bash
짜잔!
[배포 업데이트로 인해 문제가 발생했습니다.]
당신이 처음으로 ssh 할 때,이 두 가지 명령을 시도
stty sane
export TERM=linux
정확히이 문제를 해결하기 위해 들어가는 일부 컴퓨터 에서이 작업을 수행해야합니다.
stty erase <backspace>
(<백 스페이스>는 실제로 키를 누르면 곳 인)
$ stty erase '^[[A' stty: invalid integer argument '\033[A'
. [Backspace]로 : $ stty erase '^?'
작동합니다. [Tab] 사용시 : $ stty erase ' '
오류는 없지만 [Backspace]는 이상한 동작으로 돌아갑니다.
export TERM=VT100
했지만 아무 소용이 없습니다.
stty tab0
도움이되지 않습니다. xterm의 일반적인 재구성이 필요하다고 생각합니다. 아니면 키맵이 잘못 되었습니까?
이 문제를 해결하는 가장 쉬운 방법 중 하나는 명령 줄 인터페이스 프롬프트에서 / bin / bash를 입력하는 것입니다.
$ / bin / bash
앞에서 언급 한 명령은 기존 프로세스 위에 Bourne Again Shell을 하위 프로세스로 실행합니다. 이는 더 많은 리소스를 사용한다는 단점이 있지만 편집 할 필요가 없으며 특별한 권한이 필요하지 않습니다. 예를 들어 최근 쿠분투 버전에서는 기본 / bin / dash 명령 줄 셸 인터페이스에서 / bin / bash 세션을 시작합니다.
그러나 변경 사항을 유지하려면 / etc / passwd 파일을 편집하고 사용자에 해당하는 줄에서 마지막 ':'문자 다음에 기본 쉘을 / bin / bash에 추가 / 편집 / 바꾸십시오. 그러나이 파일을 편집하려면 관리자 권한이 필요합니다.
'Gbnome Terminal'은 'xterm'을 정확하게 에뮬레이트하지 않습니다.
from : Wikipedia >> 그놈 터미널
그놈 터미널은 xterm 터미널 에뮬레이터를 에뮬레이트 하고 동일한 기능 중 일부를 제공 합니다.
문제 및 해결책에 대한 논문은 여기에서 찾을 수 있습니다.
콘솔과 X에서 백 스페이스 및 Delete 키를 사용할 수없는 상황에서 모든 Linux 사용자는 조만간 갇히게되었습니다. 이 백서는 왜 이런 일이 발생하는지 설명하고 솔루션을 제안합니다. 여기에 주어진 개념은 기본적으로 배포와 무관합니다. 각 배포에서 시스템 구성 파일의 내용이 매우 다르기 때문에 독자에게 필요한 경우 자신의 수정 사항을 생각할 수있는 충분한 지식을 제공하려고합니다.
Backspace 키는 한 문자 뒤로 이동 한 다음 커서 아래의 문자를 지워야한다고 가정합니다. 반면 Delete 키는 커서 아래의 문자를 움직이지 않고 삭제해야합니다. 대부분의 키보드에 백 스페이스 키의 왼쪽 (←)을 가리키는 화살표가 있음에도 불구하고 두 키의 기능을 교환해야한다고 생각하는 경우이 백서에서는 즉각적인 해결책을 제시하지는 않지만 확실히 여기에 제공된 설명이 유용 할 수 있습니다.
주어진 가장 간단한 해결책 (여기에서 작동 할 수 있음)을 사용하는 것입니다 : bash $ export TERM = gnome
나는 성공하지 않고 위의 모든 플러스 노트 ( 이 링크 )를 시도했습니다. vim이 설치되어 있는지 확인할 수 있습니다.
나는 보통 vi not vim을 사용한다. 그래서 나는 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
좋아, 나는 이것이 말 당 "솔루션"이 아니라는 것을 알고 있으며, 그것은 당신 중 많은 사람들에게 도움이되지 않을 수도 있지만, 희망적으로는 적어도 당신 중 1 명에게 도움이되기를 바랍니다 . 내 문제가 해결되었습니다.
내 6 개월 된 내 키보드에 부딪 쳤고 화살표 키는 퍼티 세션에서 데비안 상자에 대한 작업을 중단했습니다. 그들은 다른 곳에서 일했습니다 (퍼티 이외의 다른 모든 프로그램). Googleing 후 여기에 착륙 한 후 (이 탭을 닫으려고했지만 해결되지 않았습니다) 나는 무언가를 시도했다. 같은 상자에 새 ssh 세션을 열었고 화살표 키가 작동했습니다. 스크린 세션에 참여했는데 작동하지 않았습니다. 그래서 방금 화살표 키를 비활성화하는 현재 화면 세션과 관련이 있습니다. 불행히도, 나는 큰 프로젝트의 중간에 있었고, 내 스크린 세션에서 28 개의 창이 열려 있었고, 28 개의 모든 창에서 내 자리를 잃어 버리고 세션을 닫고 싶지 않았습니다.
그래서..
bash 셸에서 CTRL + 위, 아래, 왼쪽 오른쪽, ALT + 위, 아래, 왼쪽, 오른쪽, SHIFT + 위, 아래, 왼쪽 오른쪽, CTRL + ALT + 위, 아래로 생각할 수있는 모든 조합을 시도했습니다. , 왼쪽 오른쪽, CTRL + SHIFT + 위, 아래, 왼쪽 오른쪽 등. 여전히 운이 없어도 Windows 메뉴 및 Windows 앱 키를 위, 아래, 왼쪽 오른쪽으로 시도했습니다.
이제 내 화살이 다시 작동합니다! 위의 항목과 화살표 키의 조합 중 하나에 대한 내용이 수정되었습니다.
위의 답변 중 어느 것도 내 동일한 문제를 해결하지 못했습니다. 즉 우분투에서 원격으로 sshing 한 후 백 스페이스 또는 유사한 키를 사용할 수 없습니다 (여기서는 ncurses-6.0의 ubuntu-17.10).
결국 terminfo에 문제가 있습니다. 기본적으로 내 gnome-terminal은 xterm-256color 터미널이라고 말하지만 (ssh에서 원격으로 내보내는 TERM 변수를 통해) 원격에는 xterm-256color에 대한 terminfo 구성이 없습니다.
다음을 수행하면 문제가 해결되었습니다.
$ host : 에코 $ TERM xterm-256 색 $ host : infocmp> terminfo.src $ host : tic terminfo.src $ host : scp .terminfo / x / xterm-256color $ 원격 : / usr / share / terminfo / x / xterm-256color
옵션없이 infocmp는 환경 변수 $ TERM에서 터미널에 대한 소스 목록을 생성합니다. 따라서 infocmp -I $ TERM과 같습니다.
그런 다음 결과 소스는 tic을 통해 컴파일됩니다.
마지막으로 해당 terminfo 구성을 원격 위치에 설치하십시오. 다음에 $ host를 통해 $ remote에 연결하면 터미널에 대해 알게됩니다.