'tmux'가 기본적으로 새 창을 로그인 쉘로 작성하는 이유는 무엇입니까?


26

새 세션을 시작 tmux하거나 실행중인 세션 내에서 새 창을 만들 때 기본 동작은 쉘 (예 :)을 bash로그인 쉘로 실행하는 것 입니다.

로그인 쉘은 시스템에 로그인 할 때 관심있는 루틴 구성 및 절차를 실행하기위한 것임을 이해합니다 . 그러나 대부분의 경우 (제외 당신이 사용할 수있는 tmux 대로 그가 바로 새 창을 열하고자 할 때이 작업을 수행하는 사용자의 진정한 의도가 아니다 로그인 쉘).

이것이 이것을 기본 동작으로 만드는 이유는 무엇 tmux입니까?


문서가 문제에 대해 말하는 유일한 것 :

default-command  shell-command
        Set the command used for new windows (if not specified when the
        window is created) to shell-command, which may be any sh(1)
        command.  The default is an empty string, which instructs tmux
        to create a login shell using the value of the default-shell
        option.

답변:


24

대화 형 비 로그인 셸은 일반적으로 최상위 로그인 셸보다 수명이 오래 걸리지 않으므로 언제든 사용 가능한 기능을 언제든지 사용할 수 있지만 tmux의 경우에는 해당되지 않습니다.

  • 당신은 당신의 쉘에 로그인-> 로그인 스크립트가 실행됩니다
  • tmux를 실행하고 무언가를 수행하고 분리하십시오.
  • 최상위 쉘을 종료하십시오-> 로그 아웃 스크립트가 실행됩니다
  • tmux 세션이 여전히 실행 중이지만 현재 로그인 쉘로 시작한 기능을 사용할 수 없습니다
  • 다시 로그인 한 후 다른 로그인 셸에서 다시 연결
  • 새 로그인 쉘로 시작한 모든 기능은 tmux에서 여전히 이전 환경에서 실행 중이기 때문에 보이지 않을 수 있습니다 (환경을 업데이트하는 명령이 있더라도)

대부분의 설정에는 로그 아웃 스크립트가없고 로그인 스크립트는 일부 환경 변수를 설정하기 때문에 tmux에서 로그인 쉘을 시작하는 것은 불필요하다고 생각할 수도 있습니다.

또한 로그인 스크립트에서 환경 변수에 문자열을 추가하면 (예 : PATH = $ PATH : / some / other / path) 동일한 프로세스 계층 구조에서 문자열이 두 번 이상 실행되면 중복으로 종료됩니다. 가장 성가신.

그러나 여전히 기본값이 의미가 있다고 생각하는 경향이 있습니다.

참조 : http://openbsd-archive.7691.n7.nabble.com/tmux-and-login-shells-td170948.html


2
답변과 링크에 감사드립니다! 나는 exec sh결국에 함께 살 수 있다고 생각 합니다 ... (나는 생각하지 못했습니다.)
leogama

3
tmux가 로그인 쉘을 생성하지 않으면 깨질 수있는 구체적인 예가 있습니까? 나는 그것을 기본값으로 만들려고 생각하고 있지만 진단하기 어려운 문제를 겪고 싶지 않습니다.
Carl Patenaude Poulin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.