Запуск экрана GNU при открытии терминала

Я не верю.

Даже если sed или другая программа, которую вы для этого используете, достаточно умен, чтобы вносить изменения на месте, а не с временным файлом, ей все равно придется перезаписывать все данные после начала строки, которую вы хотите удалить.

Удаление строки означает, что вы перемещаете влево все содержимое файла с точки на конец предыдущей строки. Несмотря ни на что, с этого момента вам все равно придется переписывать файл.

0
20.02.2018, 10:55
1 ответ

Es casi seguro que esto sucede porque algo en su entorno (.bashrc, /etc/profile, lo que sea )está configurando la variable TERM (, p. algo comoTERM=xterm).

Esto hace que la prueba [[ $TERM != "screen" ]]se evalúe como verdadera, por lo que se inicia otra instancia de pantalla.

La pantalla

luego ejecuta su $SHELL dentro de sí misma, lo que provoca un ciclo interminable de bashcomenzando con screeny screencomenzando con bash.

Por cierto, si $TERMno está configurado correctamente antes de que screencomience, entonces screenno sabrá cómo funcionar correctamente con la terminal en la que se está ejecutando. Así que no configurarlo no es una buena opción.

Hay varias formas mejores de detectar si un shell se está ejecutando dentro de screen. Consulte ¿Cómo sé que estoy ejecutando dentro de una "pantalla" de Linux o no? y ¿Cómo puedo saber si estoy en una pantalla? para obtener respuestas de algunas de las muchas otras veces que se ha hecho esta pregunta en los sitios hermanos de Stack Exchange.

Probablemente la forma más fácil es probar si la variable $STY está vacía. Según man screen, screenestablece esta variable para que contenga el "Nombre de socket alternativo".

En otras palabras, en lugar de:

[[ $TERM != "screen" ]] && screen

prueba esto:

[ -z "$STY" ] && screen    # test if $STY is empty

o:

[ -n "$STY" ] || screen    # test if $STY is NOT empty.

Si lo prefiere, puede usar [[.... ]]en su lugar. Hace poca diferencia, excepto que no tendría que duplicar -comillas $STY.En mi opinión, es un mal hábito y debería citarlo de todos modos porque las situaciones en las que tiene que duplicar -sus variables superan ampliamente el puñado de casos especiales en los que no tiene que hacerlo.

2
28.01.2020, 02:32

Теги

Похожие вопросы