Use a tela GNU como "shell" de login

22

Qual é a melhor maneira de executar a tela automaticamente quando você abre um novo shell, seja por login, xterm ou qualquer outra coisa?

Vejo que a recomendação mais comum é colocar exec screeno arquivo rc ou de login / perfil do seu shell comum, mas, por exemplo, tcsh, os shells de login executam .login por último, enquanto os shells sem login leem .cshrc por último. Se eu exec screeninserir o arquivo .cshrc, os shells de login não criarão o arquivo .login e, se eu o colocar em .login, os shells que não sejam de login não serão executados na tela. Presumo que haja problemas semelhantes com outras conchas.

wfaulk
fonte
1
Isso não responde à pergunta, mas vale a pena mencionar: tmux é um passo revolucionário da tela e tenta estar perto de um teclado compatível com a tela. Esta página documenta como iniciá-lo automaticamente a partir de .bashrc.
Datashaman

Respostas:

19

Uma maneira é:

# if $STY is not set...
if [ -z "$STY" ]; then
    exec screen -ARR
fi

Observe que isso foi escrito para bash, mas também deve ser semelhante csh. Coloque-o para .cshrcser executado para todas as conchas.


Outra maneira: Você pode simplesmente definir screencomo seu shell de login em /etc/passwdsi mesmo, e colocar esta linha ao seu ~/.screenrc: (Corrija o caminho, é claro.)

defshell / bin / csh

Mas isso pode interromper os programas que executam o shell de login definido /etc/passwdpara vários comandos.

( Editar: não se esqueça de adicionar a tela /etc/shells)

gravidade
fonte
1
Não conhecia a variável STY antes e, enquanto a pesquisava no manual da tela, também descobri que você pode executar a tela com tela para executar comandos em uma nova janela (por exemplo, "screen vi" abrirá vi em um nova janela, sem um shell de controle). BTW, para csh, você o colocaria no arquivo .login e não no .cshrc, não deseja que ele seja executado para shells "todos". Alguma coisa se aplica ao bash, coloque-o em .profile ou .bash_login, não em .bashrc.
haridsv
4

Pergunta antiga, mas pesquisar no Google pela mesma coisa me trouxe aqui, então aqui está uma resposta para qualquer pessoa que tropeça nesta página.

A melhor coisa que encontrei até agora é o byobu, se a sua distribuição o possuir. Vem com uma opção para executar no login e controla várias telas ao mesmo tempo.

Você pode desconectar e desconectar-se em um local e depois acessar a mesma sessão em outro local.

Acho que a tela é ótima para executar processos de servidor, mas o byobu é ótimo para as coisas do dia a dia.

solbot
fonte
-2

Que tal usar chsh:

chsh /usr/bin/screen

Isso define o shell de login padrão em / etc / passwd. (você poderia fazer isso também)

Mrossi
fonte
Torna-se difícil fazer algo com sua conta que não seja o login. Além disso, seu sysadmin provavelmente não possui tela no / etc / shells. Veja também a resposta aceita.
wfaulk