원격 .bashrc를 수정하지 않고 SSH 로그인 명령 실행

원격 .bashrc를 수정하지 않고 SSH 로그인 명령 실행

우리 set -o vi는 그들의 ~/.bashrc.

이 상자에 SSH를 통해 연결하고 자동으로 실행하여 set -o emacs시간을 절약할 수 있다면 좋을 것입니다.

원격 호스트에서 이러한 추가 작업을 수행해야 한다고 제안하는 솔루션을 보았지만 ~/.bashrc여러 가지 이유로 이를 수정할 수 없습니다.

또 다른 해결책은 다음을 사용하는 것을 제안합니다.

spawn ssh -t user@host "set -o emacs; /bin/bash -i"

expect.. 하지만 일반 쉘이 아닌 쉘을 실행해야 한다는 것을 알고 있습니다 bash.

이것을 달성하는 쉬운 방법이 있습니까? 어떤 조언이라도 대단히 감사하겠습니다.

답변1

ssh -t user@host bash -o emacs -i

답변2

이 옵션으로 bash를 시작 --rcfile하고 다른 bashrc를 지정하십시오. 예를 들어, ~/.bashrc-emacs다음을 포함하는 파일을 작성하십시오.

. ~/.bashrc
set -o emacs

그리고 달리다

ssh -t user@host bash --rcfile=.bashrc-emacs

읽기 --norc건너뛰기를 완전히 사용할 수 있습니다 . Bash는 기본적으로 Emacs 모드입니다./etc/bash.bashrc~/.bashrc

정말로 원격 데이터를 읽고 싶지만 .bashrc서버의 어떤 파일에도 쓰고 싶지 않다면, 예상이 최선의 선택이라고 생각합니다.

답변3

.bashrc를 편집하지 않는다고 말씀하신 것으로 알고 있습니다. 그러나 이것이 다른 사람들에게 도움이 되기를 바랍니다. 나는 수년 동안 비슷한 질문에 대한 좋은 답을 찾고 있었습니다. 나는 vi를 사용하는 것을 좋아하지만 다른 사람의 기본 설정을 변경하고 싶지 않습니다.

로컬 구성에서 /etc/ssh/ssh_config를 편집하고 다음 줄을 추가합니다.

SendEnv EDITOR

어떤 환경 변수든 사용할 수 있지만 EDITOR가 좋은 선택인 것 같습니다. 제 경우에는 에디터가 vim으로 설정되어 있습니다.

원격 시스템에서 /etc/ssh/sshd_config를 편집하고 다음 줄을 추가합니다.

AcceptEnv EDITOR

.bashrc 또는 .bash_profile을 편집하고 다음을 추가합니다.

if [ "$EDITOR" = "vim" ]; then
         set -o vi;
fi

이 질문의 사용 사례에서는 vi를 emacs로 바꾸십시오. 참고: 대상 시스템에서 sshd를 다시 시작해야 할 수도 있습니다.

관련 정보