SSH 로그인 시 tmux 실행

SSH 로그인 시 tmux 실행

SSH 로그인 시 tmux가 시작되기를 원합니다.

일반적인 조언은 다음에 추가하는 것입니다 ~/.bashrc.

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
  tmux attach-session -t mysession 2>/dev/null || tmux new-session -s mysession
fi

하지만 로그인하면 tmux에서 다음 오류가 발생합니다.

서버 손실

...그리고 평소처럼 막혔어요.


고쳐 쓰다

수면을 추가하면:

if [ -z "$TMUX" ] && [ -n "$SSH_TTY" ] && [[ $- =~ i ]]; then
  tmux attach-session -t mysession 2>/dev/null || $(sleep 1 && tmux new-session -s mysession)
fi

...그리고 그게 다야. 이상한! 이유는 무엇입니까?

답변1

tmux자동으로 시작 하려면 ~/.bash_profile(로그인 쉘의 경우) 또는 ~/.bashrc(대화형 쉘의 경우) 다음과 같은 것을 사용하십시오.

if [[ -z $TMUX ]] && [[ -n $SSH_TTY ]]; then
    session=mysession

    if tmux has-session -t "$session" 2>/dev/null; then
        exec tmux attach-session -t "$session"
    else
        exec tmux new-session -s "$session"
    fi
fi

tmux쉘이 시작된 경우 ssh현재 쉘이 이미 실행 중이 아닌 한 쉘을 세션으로 대체합니다 tmux.

최신 버전의 경우 tmux다음을 사용할 수 있습니다.

if [[ -z $TMUX ]] && [[ -n $SSH_TTY ]]; then
    exec tmux new-session -A -s mysession
fi

당신은 이것을하고 싶을 것입니다뒤쪽에터미널 기능과 로케일 설정에 영향을 주는 변수를 설정합니다(예: TERM및(설정한 경우)).LC_*

ssh실행하려면 의사 터미널이 필요하므로 tmux연결해야 합니다 ssh -t(또는 연결하려면 RequestTTY forcein을 사용해야 합니다 ~/.ssh/config).

관련 정보