Por que o 'tmux' cria novas janelas como shells de login por padrão?

21

Quando você inicia uma nova sessão em tmux ou cria uma nova janela dentro de uma sessão em execução, seu comportamento padrão é executar um shell (ex .: bash ) como um shell de login.

Eu entendo que um shell de login se destina a executar uma rotina de configurações e procedimentos que são de interesse apenas quando você está efetuando login em um sistema . Mas na maioria dos casos (com a exceção de que você pode usar tmux como um shell de login) não é a verdadeira intenção do usuário fazer isso quando ele quer abrir uma nova janela .

Então, qual é a razão para tornar isso o comportamento padrão de tmux ?

A única coisa que a documentação diz sobre o assunto:

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.
    
por leogama 06.09.2015 / 02:58

1 resposta

17

Shell de login não interativo geralmente nunca sobrevive ao seu shell de login de nível superior, portanto eles podem esperar que qualquer instalação iniciada por ele esteja disponível a qualquer momento, mas este não é o caso do tmux:

  • você faz login no seu shell - > seus scripts de login são executados
  • você roda o tmux, faz algo, desconecta
  • saia do seu shell de nível superior - > seus scripts de logout são executados
  • a sessão do tmux ainda está em execução, mas as instalações iniciadas pelo seu shell de login não estão disponíveis no momento
  • você faz login novamente e reinsira de outro shell de login
  • quaisquer instalações iniciadas pelo novo shell de login podem não estar visíveis pelo tmux porque ele ainda está sendo executado com o ambiente antigo (mesmo que haja comandos para atualizar o ambiente)

Alguns podem achar que ter shells de início de login do tmux é desnecessário de qualquer maneira, porque na maioria das configurações não há scripts de logout, e scripts de login apenas configuram algumas variáveis de ambiente.

Além disso, se você anexar strings às suas variáveis de ambiente em seus scripts de login (assim: PATH = $ PATH: / algum / outro / caminho) e eles forem executados mais de uma vez na mesma hierarquia de processo, você terá duplicatas, e isso é muito chato.

Mas ainda tenho a tendência de pensar que o padrão faz sentido.

Veja também isto: link

    
por 10.09.2015 / 02:05

Tags