¿Por qué no puedo desplazarme o usar Ctrl-a/ctrl-e cuando uso la pantalla?

¿Por qué no puedo desplazarme o usar Ctrl-a/ctrl-e cuando uso la pantalla?

Utilizo iTerm2 y me di cuenta de que cuando uso la pantalla: ssh -t [nombre de usuario]@[dominio].edu 'pantalla -DR'

Noté los siguientes caprichos:

  • No puedo usar el mouse para desplazarme hacia arriba y hacia abajo en una ventana de iTerm2

  • No puedo usar Ctrl-a para ir al principio de la línea.

  • No puedo usar Ctrl-e para ir al final de una línea.

  • Mi ~/.bash_profile no tiene origen

Estoy seguro de que hay otros, pero ¿cómo puedo hacer que el comportamiento sea como si hubiera entrado sin una sesión de pantalla?

Respuesta1

Los atajos de teclado que mencionas los implementa el shell Bash. Si no funcionan, eso probablemente significa que no estás usando Bash como tu shell por alguna razón, aunque es un poco extraño que Screen inicie un shell diferente al que hace SSH:

  • Compruebe si su ~/.screenrcarchivo tiene algún comando "shell" o "defshell".
  • Compruebe si el shell informado getent passwd $USERen el último campo es /bin/bash.
  • Compruebe si printenv SHELL(fuera de la pantalla) coincide con lo que getentinforma.

En algunos sistemas, si su shell de inicio de sesión real está configurado en algo extraño, es posible que deba indicarle manualmente a Screen que use bash con la shell bashconfiguración screenrc. (Por ejemplo, es posible que su servidor en realidad tenga /bin/sh como shell de la cuenta de usuario, pero el ~/.profile de sh esté configurado para iniciar /bin/bash en la parte superior. En este caso, el shell 'sh' comenzó by Screen no leerá ~/.profile y no saltará a bash.)


Su ~/.bash_profile no se obtendrá para shells que no sean de "inicio de sesión". La capa exterior que iniciaste Pantalladeera un shell de "iniciar sesión"; los que están dentro de Pantalla generalmente no son de inicio de sesión y se espera que solo carguen ~/.bashrc pero no ningún script de "perfil" - eso es para evitar que cada nueva ventana de Pantalla inicie innecesariamente cosas que ya fueron iniciadas por el shell inicial.

En su lugar , se deben incluir elementos como alias y funciones ~/.bashrc, pero la configuración de "shell" en screenrc se puede usar para forzar que el shell se inicie en modo "iniciar sesión" anteponiendo su comando con un -, por ejemplo -bash.


El desplazamiento estándar basado en terminal no funcionará con multiplexores como Screen o tmux, y eso es en parte por diseño: el multiplexor es su propio emulador de terminal y controla el terminal externo de una manera más directa, donde el texto no funciona tanto.desplazarsecomo están las cosasborrado y sobrescrito.

Por ejemplo, cuando su sesión de Pantalla tiene dos paneles divididos horizontalmente, el texto del panel inferior debe borrarse explícitamente cuando está a punto de salir de la vista; de lo contrario, terminaría con basura en el panel superior. (¿Cómo funcionaría el desplazamiento hacia atrás si su sesión de Pantalla tuviera dos paneles divididos verticalmente?)

Debido a esto, Screen generalmente está configurado para cambiar deliberadamente el terminal externo al modo de "pantalla alternativa", deshabilitando el desplazamiento hacia atrás de iTerm2 mientras dure. Puedes intentar usar la altscreen offconfiguración en tu screenrc para evitar que esto suceda, pero no esperes que el desplazamiento hacia atrás de iTerm tenga mucho sentido.

En lugar de hacer esto, puede ingresar al "modo de copia" de la pantalla usando Ctrl-a[para poder desplazarse por un panel específico.

información relacionada