Gah, foi culpa do script sharedaccount
SHELL. Ele estava chamando exec env -i ...
para criar um novo shell sem a sujeira do ambiente do usuário original.
Desculpe se perdi o tempo de alguém.
Estou tentando fazer o script da desova de janelas GNU / screen usando comandos do formulário screen <CMD>
.
Por alguma razão, quando eu inicio o GNU / screen (manualmente), o shell que ele inicia na janela 0 ( /bin/bash
) não contém uma variável de ambiente $STY
. Sem esses comandos como screen vim
inicie uma sessão de tela aninhada , não outra janela como eu quero.
Meu ambiente é um tanto incomum. Aqui está como eu acabo nisso:
ssh robm@somehost
sudo su sharedaccount
script /dev/null
screen
A etapa script /dev/null
existe porque o dispositivo TTY alocado para o usuário robm
não pode ser acessado pelo usuário sharedaccount
. O comando script
aloca um novo TTY que pertence ao usuário que o invocou, solucionando esse problema.
Se eu pular as etapas sudo
e script
, o GNU / screen definirá $STY
bem. Em outras palavras, isso funciona bem:
ssh robm@somehost
screen
Presumivelmente, algo sobre sudo
e script
interfere com screen
, mas estou perplexo quanto a quê.
Gah, foi culpa do script sharedaccount
SHELL. Ele estava chamando exec env -i ...
para criar um novo shell sem a sujeira do ambiente do usuário original.
Desculpe se perdi o tempo de alguém.
Acho que você poderia pular a etapa script /dev/null
e corrigir seu problema se você alterasse sua chamada para su
emitindo-a com um traço, como: sudo su - sharedaccount
.
Isso definiria todas as suas variáveis de ambiente principalmente do jeito que elas estariam se você estivesse logado como sharedaccount
.
Tags sudo gnu-screen linux shell script