Estou usando a tela (o gerenciador de sessão de terminal com nome problemático) em um sistema remoto acessado por SSH - para executar processos de longa duração e outros. Eventualmente, comecei a usar um comando para anexar diretamente à sessão da tela, em vez de primeiro fazer login por meio do SSH e depois iniciar a tela:
ssh -t hostname screen -xRR
O uso do -xRR
é anexar à sessão de tela existente, se disponível, caso contrário, basta criar uma nova. O problema é que quando uma nova sessão é criada, ela não é criada como um shell de login:
$ shopt -q login_shell; echo $?
1
e, como resultado, a configuração da sessão de login (em execução .profile
e amigos) não é concluída e, em seguida, faltam partes da configuração, em comparação com o primeiro uso do SSH para fazer o login e depois a execução screen
- nesse caso, o shell que o SSH inicia é um shell de login e está configurado corretamente e acho que a tela herda o ambiente.
Tentei usar o -l
sinalizador na tela, que está documentado como "modo de login", mas não ajuda - acho que apenas atualiza o "horário de login" para coisas como who
.
Alguma idéia de como obter a tela para executar um shell de login?
Das páginas de manual do GNU
screen
:...
Então você tem duas opções:
Execute o seguinte comando para garantir que
bash
seja iniciado como um shell de login:Se você deseja que esse comportamento seja o padrão, adicione a seguinte linha ao seu
$HOME/.screenrc
arquivo no host de destino (ou onde quer que você execute seuscreen
comando):