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