tmux는 명령줄과 해당 구성 파일(.tmux.conf) 간에 다르게 동작합니다.

tmux는 명령줄과 해당 구성 파일(.tmux.conf) 간에 다르게 동작합니다.

tmux는 명령줄과 해당 구성 파일(.tmux.conf) 간에 다르게 동작합니다.

명령줄:

bash$ tmux new \; split-window -h \;

구성 파일(.tmux.conf)(그런 다음 명령줄에 "tmux"만 입력)

new
split-window -h

명령줄 버전에서는 시작 시 분할 창이 잘 표시되며 세션은 하나만 생성됩니다. 그러나 프로필 버전은 다르게 동작합니다.

  • 하나의 세션이 아닌 세션 이름이 "0"과 "1"인 2개의 세션을 생성합니다.
  • 세션 "0"에는 명령줄 버전에서 본 것과 동일한 분할 창이 있습니다.
  • 세션 "1"에는 전체 창이 있습니다.
  • 세션 "1"에서 중지됩니다.

그래서 프로필 버전에서는 마침내 화면의 "1" 세션에 도달하게 되었습니다. "종료"를 수행한 다음 세션 0을 추가하면 명령줄 버전과 동일한 결과로 "0" 세션으로 이동합니다.

또는 구성 파일에 분할 줄만 포함된 경우:

split-window -h

그런 다음 "tmux"를 입력하면 시작 시 오류 메시지가 표시됩니다.

.tmux.conf:1: no current target 

그리고 분할 창이 없습니다(분할 창 명령이 실패하기 때문에: 보시다시피 구성의 첫 번째 줄에 현재 대상이 없다고 불평합니다.)

분명히 명령줄 버전은 내가 원하거나 필요한 것입니다.

구성 파일 버전에 문제가 있나요?

답변1

차이점은 tmux편집 후 수동으로 입력한 명령 에 있습니다 .tmux.conf.

tmux 서버와 각 tmux 클라이언트가 별도의 프로세스라는 것을 인식하고 기억하면 tmux와 관련된 많은 문제를 더 쉽게 이해할 수 있습니다. 어떤 경우에는 클라이언트가 서버를 시작합니다. .tmux.conf클라이언트가 아닌 서버에 적용됩니다.

tmux인수 없이 tmux new-sessionaka 처럼 작동합니다 tmux new. 필요한 경우 tmux 서버를 시작합니다. tmux 서버가 시작되면 .tmux.conftmux 클라이언트의 요청을 처리하기 전에 구문 분석합니다.

따라서 실행 중인 서버가 없으면 tmuxtmux 서버를 만들고 다음을 실행합니다.

new-session      # because of .tmux.conf
split-window -h  # because of .tmux.conf
new-session      # because this is the request from your client

클라이언트가 생성된 마지막 세션에 연결됩니다.new-session, 암시적으로 요청하는 것입니다.

클라이언트가 이미 생성된 세션에 연결되도록 하려면 tmux attach-sessionaka tmux attach또는 를 사용하세요 tmux a. tmux 서버가 아직 존재하지 않는 경우 이를 생성하려고 시도하며 attach-session생성할 세션은 클라이언트의 요청이 최종적으로 처리될 때 "생성"된 것으로 간주됩니다. .tmux.conf이것은문서:

서버가 시작되지 않은 경우 서버 attach-session를 시작하려고 시도합니다. 구성 파일에 세션이 생성되지 않으면 실패합니다.

문제가 있는 경우 파일에서 생성된 세션에 (단순히 추가하는 것이 아니라 ) 추가 .tmux.conf해야 합니다 . tmux 서버가 이미 존재하는 경우 다시 확인 되지 않으며 일부 기존 세션(있는 경우)에 연결하려고 시도합니다.tmux atmux.tmux.conftmux a

나를 포함한 일부 사용자는 기존 세션으로 돌아가는 것을 선호하므로 쉘에서 또는 를 사용합니다 tmux new-session -A. tmux a || tmux이 명령은 .tmux.conf.

새로 생성된 세션을 실행 하려면 split-window -h다음과 같은 후크를 사용할 수 있습니다.

set-hook -g session-created 'split-window -h'

(이것은 쉘의 tmux 명령입니다 tmux set-hook ….)

관련 정보