tmux는 scp 사용을 방해하는지 확인합니다.

tmux는 scp 사용을 방해하는지 확인합니다.

내 서버의 .bashrc 파일은 비교적 간단하지만 로그인 시 자동으로 tmux에 연결되도록 하는 다음 블록이 있습니다.

echo Checking for tmux
if [ -z ${TMUX} ]
then
      /usr/bin/tmux attach || /usr/bin/tmux
fi

이것은 일반적으로 잘 작동하지만 해당 서버에 scp를 시도하면 작동하지 않습니다. scp 뒤에 "세션 없음, 터미널이 아님"이 표시되면 로컬 터미널에 "tmux 확인 중" 메시지가 표시됩니다. 이 문제를 해결하기 위해 위 테스트를 다음으로 변경해 보았습니다.

if [ -z ${TMUX} ] && [ -t 0 ]

이렇게 하면 "세션 없음, 터미널이 아님" 오류가 제거되지만 파일은 자동으로 복사되지 않습니다. 위의 내용을 모두 주석 처리하면 복사본이 제대로 작동하므로 분명히 문제가 있지만 위 테스트에 실패하면 왜 영향을 미치는지 잘 모르겠습니다. 뭐가 문제 야?

답변1

비대화형 셸에서는 아무 것도 인쇄하면 안 됩니다. 일반적인 코드 조각은 다음 .bashrc과 같습니다.

[[ $- != *i* ]] && return

처음에는 비대화형 쉘의 모든 파일을 건너뜁니다.

예를 들어 다음과 같이 미리 확인해야 합니다 echo.

[ -t 0 ] && return
echo Checking for tmux

echo텍스트를 편집하면 scp계약이 깨질 수 있기 때문입니다 .

관련 정보