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