원격 SSH 세션이 tmux를 인식하게 하시겠습니까?

원격 SSH 세션이 tmux를 인식하게 하시겠습니까?

tmux컴퓨터 A에서 세션을 실행하고 ssh해당 세션에서 컴퓨터 B로 대화형 셸을 시작한다고 가정합니다 .

PS1아래 사용법에 더 적합하도록 Machine B를 교체하고 싶습니다 tmux. 예를 들어 XTerm 제목 문자열에 다른 콘텐츠를 포함합니다.

나는 항상 tmux 최적화 프롬프트를 표시하기 위해 머신 B의 설정을 편집하지 않을 것입니다. 때로는 ssh일반 터미널(이 아닌)에서 시스템 B에 연결하고 이 경우 일반 터미널을 사용 tmux하기를 원합니다 .PS1

이를 달성하기 위한 표준/승인된 최선의 방법이 있습니까?

지금까지 내가 생각한 것은 AcceptEnviron컴퓨터 B의 구성에서 설정하고 sshd연결할 때 사용자 정의 신호 변수를 전달하는 것뿐입니다.ssh

답변1

원하는 작업을 수행할 수 있는 한 가지 방법은 다음과 같습니다.

tmux는 자신이 생성한 셸에 환경 변수(예: $TMUX, $TMUX_PANE)를 설정합니다. 이러한 변수를 감지하고 ssh 명령을 실행하여 원격 세션에 클라이언트 시작 방법을 알려줄 수 있습니다. 우리는 두 단계를 살펴보겠습니다.

먼저 ssh가 시작된 위치를 검색합니다. 이 작업은 "ssh"라는 함수에서 수행할 수 있습니다.

function ssh {
    if [ -z "$TMUX" ]; then
        # echo connecting from a plain terminal
        /usr/bin/ssh $1 # $1 is <user@hostname>
    else
        # echo connecting through tmux
        /usr/bin/ssh -t $1 bash --rcfile '~/.bashrc.tmux'
    fi
}   

참고: 함수 이름이 경로에 있는 프로그램과 동일하게 지정되면 해당 함수가 우선적으로 적용됩니다. 혼동을 피하려면 함수 이름을 다르게 지정하십시오.

둘째, 원격 호스트가 그에 따라 프롬프트를 설정하려면 원격 호스트에 ~/.bashrc.tmux 파일을 만듭니다.

# contents of .bashrc.tmux, override PS1 to your liking
source .bashrc
PS1="[\d \t \u@\h:\w ] $ "

또는 더 많은 장소에서 사용할 수 있도록 환경 변수를 설정할 수 있습니다.

RUNNING_THRU_TMUX=true
source .bashrc

관련 정보