Use la pantalla GNU como "shell" de inicio de sesión

22

¿Cuál es la mejor manera de que la pantalla se ejecute automáticamente cuando abre un nuevo shell, ya sea por inicio de sesión, xterm o cualquier otra cosa?

Veo que la recomendación más común es colocar exec screenel rc de su shell habitual o el archivo de inicio de sesión / perfil, pero, por ejemplo, tcsh, los shells de inicio de sesión ejecutan .login en último lugar, mientras que los shells sin inicio de sesión leen .cshrc en último lugar. Si pongo exec screen.cshrc, los shells de inicio de sesión no generarán el archivo .login, y si lo pongo en .login, los shells que no inician sesión no mostrarán la pantalla. Supongo que hay problemas similares con otros proyectiles.

wfaulk
fuente
1
Esto no responde a la pregunta, pero vale la pena mencionarlo: tmux es un paso revolucionario desde la pantalla e intenta estar cerca del teclado compatible con la pantalla. Esta página documenta cómo iniciarlo automáticamente desde .bashrc.
datashaman

Respuestas:

18

Una forma es:

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

Tenga en cuenta que esto está escrito para bash, pero también debería ser similar csh. Ponlo a .cshrcejecutar para todos los proyectiles.


Otra forma: simplemente puede establecer screencomo su shell de inicio de sesión en /etc/passwdsí mismo, y poner esta línea a su ~/.screenrc: (Fijar la ruta, por supuesto).

defshell / bin / csh

Pero esto puede interrumpir los programas que ejecutan el shell de inicio de sesión definido en /etc/passwdvarios comandos.

( Editar: No olvides agregar pantalla a /etc/shells)

Gravedad
fuente
1
No conocía la variable STY antes, y mientras lo buscaba en el manual de la pantalla, también descubrí que puede ejecutar la pantalla dentro de la pantalla para ejecutar comandos en una nueva ventana (por ejemplo, "screen vi" abrirá vi en un nueva ventana, sin shell de control). Por cierto, para csh, lo pondría en el archivo .login no .cshrc, no desea que se ejecute para "todos" los shells. Lo mismo se aplica a bash, póngalo en .profile o .bash_login, no en .bashrc.
haridsv
4

Antigua pregunta, pero buscar en Google lo mismo me trajo aquí, así que aquí hay una respuesta para cualquier otra persona que se encuentre con esta página.

Lo mejor que he encontrado hasta ahora es byobu si tu distribución lo tiene. Viene con una opción para ejecutarse al iniciar sesión y controla múltiples pantallas a la vez.

Puede separar y cerrar sesión en una ubicación y luego iniciar sesión en la misma sesión en otra ubicación.

Creo que la pantalla es excelente para ejecutar procesos de servidor, pero byobu es ideal para las cosas cotidianas.

solbot
fuente
-2

¿Qué hay de usar chsh:

chsh /usr/bin/screen

Esto establece el shell de inicio de sesión predeterminado en / etc / passwd. (también podrías hacerlo allí)

mrossi
fuente
Luego se vuelve difícil hacer algo con su cuenta que no sea iniciar sesión. Además, su administrador de sistemas probablemente no tiene pantalla en / etc / shells. Además, vea la respuesta aceptada.
wfaulk