
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 force
in을 사용해야 합니다 ~/.ssh/config
).