SSH 쉘에서 작동하지 않는 .bashrc의 "set -o emacs"를 수정하는 방법

SSH 쉘에서 작동하지 않는 .bashrc의 "set -o emacs"를 수정하는 방법

저는 사용자와 호스트로 구성된 LDAP 기반 네트워크에서 작업하고 있습니다. 내 사용자는 LDAP 사용자이기 때문에 모든 호스트에 존재하며, 내 사용자의 홈 디렉터리는 마운트 지점으로 모든 호스트에 존재합니다.

~/.bash_profile소스가 ~/.bashrc있으면 설정해두었습니다 .

~/.bashrc내 마지막 줄 안에는 set -o emacs.

로컬 셸에서는 로그인 후 emacs 스타일 줄 편집을 활성화하도록 emacs 옵션을 올바르게 설정합니다.

그러나 다른 호스트로 ssh를 하면 ~/.bashrc다른 모든 것을 로드 해도 set -o emacs적용되지 않거나 적용되고 덮어쓰게 됩니다.

그래서 현재는 set -o emacs다른 호스트에 SSH로 연결할 때마다 수동으로 수행해야 합니다.

set -o emacsEmacs 라인 편집이 활성화된 상태에서 대화형 쉘에 들어가자마자 자동으로 실행되도록 다른 호스트로 SSH를 통해 실행할 수 있는 방법이 있습니까 ?

답변1

일부 명령을 사용하여 my 이후에 로드되고 my 를 재정의하는 호출이 포함되어 있음 strace을 발견했습니다 . 내 로컬 컴퓨터에는 문제가 존재하지 않으므로 localhost에서는 문제가 발생하지 않습니다./etc/inputrc~/.bashrcset editing-mode viset -o emacs/etc/inputrc

또한 strace는 대체 항목으로 로드하기 ~/.inputrc전에 무엇을 찾아야 할지 결정합니다./etc/inputrc

그래서 우리는 touch ~/.inputrc빈 것을 생성 inputrc하고 짜잔, set -o emacs이제 SSH를 사용하여 로그인할 수 있습니다 :)

답변2

ssh표준 입력 및 표준 출력이 ssh로컬 터미널로 전달되는 원격 호스트에서 새로운 셸을 시작합니다. 따라서 set -o emacs실행 해야 합니다.외딴로컬 호스트가 아닌 호스트. emacs스타일 라인 편집이 기본값이므로 원격 파일에 이미 유사한 라인이 포함되어 있을 수 있으므로 삭제 set -o vim해야 합니다.

관련 정보