[server] ssh를 호출 할 때 $ TERM의 값을 변경할 수 있습니까?

로컬 터미널에는 TERM = konsole-256color가 있지만이 정의를 갖기 위해 연결하는 모든 원격 시스템은 아닙니다.

ssh가 원격 시스템의 TERM을 변경할 수 있습니까? 로컬 컴퓨터에서 구성을 변경하여 원격 컴퓨터에서 .bash * 스크립트를 변경하지 않고?



답변

내 .bashrc 파일에 다음 별칭을 추가했습니다. OG의 답변을 사용하지만 별칭으로 래핑합니다. 매력처럼 작동합니다.)

# Force xterm-color on ssh sessions
alias ssh='TERM=xterm-color ssh'


답변

TERM=vt100 ssh some.host.name

원격에서 echo $ TERM을 실행하십시오 .


답변

남자 ssh :

     ssh reads ~/.ssh/environment, and adds lines of the format
     “VARNAME=value” to the environment if the file exists and users are
     allowed to change their environment.  For more information, see the
     PermitUserEnvironment option in sshd_config(5).

편집하다:

쥐, 나는 그것이 로컬에있을 수 있기를 희망했지만 여전히 의지가 있다면 방법이 있습니다. 남자 ssh_conf :

SendEnv
             Specifies what variables from the local environ(7) should be sent
             to the server.  Note that environment passing is only supported
             for protocol 2.  The server must also support it, and the server
             must be configured to accept these environment variables.  Refer
             to AcceptEnv in sshd_config(5) for how to configure the server.
             Variables are specified by name, which may contain wildcard char-
             acters.  Multiple environment variables may be separated by
             whitespace or spread across multiple SendEnv directives.  The
             default is not to send any environment variables.

수신 측의 sshd 구성에 따라 “원격 파일 수정 없음”요구 사항을 충족하거나 충족하지 못할 수 있습니다.


답변

여기에 방금 던진 빠르고 더러운 솔루션이 있습니다. 더 나은 것을 선호합니다. 쉘 스크립트를 대신 사용할 수 있다고 생각합니다. TERM값 조정 은 독자에게 연습으로 남습니다.

# To move into a separate plugin...
function ssh {
   if [[ "${TERM}" = screen* || konsole* ]]; then
     env TERM=screen ssh "$@"
   else
     ssh "$@"
   fi
}

이상적으로는 다른 연결에서 TERM을 확인하는 것과 같은 작업을 수행하여 ControlPersist여러 연결의 긴 지연을 방지하는 것을 사용합니다 .


답변