각 세션의 첫 번째 창만 로그인 셸(그리고 다른 모든 후속 창/창은 비로그인 셸)을 로드하도록 tmux를 어떻게 구성할 수 있나요?

각 세션의 첫 번째 창만 로그인 셸(그리고 다른 모든 후속 창/창은 비로그인 셸)을 로드하도록 tmux를 어떻게 구성할 수 있나요?

이 게시물의 제목이 충분히 설명이 되기를 바랍니다.

tmux 매뉴얼에 잘 설명되어 있듯이, tmux새로운 tmux 창이나 창(분할)이 시작될 때마다 로그인 쉘이 시작됩니다.

tmux대신, 세션당 하나의 로그인 셸(아마도 첫 번째 창)만 시작되고 이후에 생성되는 모든 창/창은 비로그인 셸이 되도록 구성하려면 어떻게 해야 합니까 ?

~/.bash_profile이것이 가능하지 않다면 적어도 서버가 시작될 때 또는 를 읽도록 tmux를 구성할 수 있지만 ~/.profile서버에서 시작된 모든 창은 tmux일반(비로그인) 셸이어야 합니까?

답변1

래퍼 스크립트의 Tmux 옵션을 사용할 수 있습니다 default-command. 나는 한동안 다음 배열을 성공적으로 사용해 왔습니다.

  • PATH예를 들어 다음 스크립트를 어딘가에 넣으십시오 ./usr/local/bin/tmux-default-command

    #!/bin/sh
    
    default_shell=$(tmux show-options -gqv default-shell)
    default_shell=${default_shell:-$SHELL}
    default_shell=${default_shell:-/bin/bash}
    
    current_window=$(tmux display-message -p '#I')
    
    if [ "$current_window" = "0" ]; then
        tmux rename-window "Hello" && exec "$default_shell" -l
    else
        exec "$default_shell"
    fi
    
  • Tmux 구성에서

    default-shell   = '/bin/bash' # optional
    default-command = 'tmux-default-command'
    

-HTH

관련 정보