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-session
aka 처럼 작동합니다 tmux new
. 필요한 경우 tmux 서버를 시작합니다. tmux 서버가 시작되면 .tmux.conf
tmux 클라이언트의 요청을 처리하기 전에 구문 분석합니다.
따라서 실행 중인 서버가 없으면 tmux
tmux 서버를 만들고 다음을 실행합니다.
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-session
aka tmux attach
또는 를 사용하세요 tmux a
. tmux 서버가 아직 존재하지 않는 경우 이를 생성하려고 시도하며 attach-session
생성할 세션은 클라이언트의 요청이 최종적으로 처리될 때 "생성"된 것으로 간주됩니다. .tmux.conf
이것은문서:
서버가 시작되지 않은 경우 서버
attach-session
를 시작하려고 시도합니다. 구성 파일에 세션이 생성되지 않으면 실패합니다.
문제가 있는 경우 파일에서 생성된 세션에 (단순히 추가하는 것이 아니라 ) 추가 .tmux.conf
해야 합니다 . tmux 서버가 이미 존재하는 경우 다시 확인 되지 않으며 일부 기존 세션(있는 경우)에 연결하려고 시도합니다.tmux a
tmux
.tmux.conf
tmux 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 …
.)