Как вы узнаете, находится ли текущий сеанс терминала на экране GNU?

У меня есть команда, которую я хочу выполнить в .bashrc, только когда текущий терминал Окно управляется экраном GNU. Как мне это сделать? Есть ли переменная среды? Раньше я имел

if [ -n "$WINDOW" ]; then
    command
fi

Но из того, что я могу сказать, $WINDOW может или не может быть определен на всех экранах управляемые сеансы.

Ответы

Ответ 1

Проверьте переменную среды $STY (содержит информацию о экране) или для $TERM, являющегося "экраном" (вероятно, менее надежным).

Ответ 2

ссылка правильная

См. документ

http://www.gnu.org/software/screen/manual/html_node/Environment.html

STY

Альтернативное имя сокета. Если вызывается screen, а переменная среды STY установлена, то она создает только окно в текущем сеансе screen вместо запуска нового сеанса.

Ответ 3

check $TERM, он установлен на 'screen' в сеансе сеанса.. (но не на 100% гарантированно)

UPDATE

В качестве альтернативы вы можете использовать тот факт, что на экране $TERMCAP содержит подстроку экрана:

[[ $TERMCAP =~ screen ]] && echo "in screen"

также не гарантируется на 100%

UPDATE2

Если ни один из подходов не работает, вы можете найти вдохновение в экранное руководство

Ответ 4

Я хотел бы предложить альтернативное решение, которое всегда видно и не требует проверки того, что вы находитесь внутри сеанса screen.

Просто добавьте/отредактируйте файл ~/.screenrc в папке $HOME и добавьте команду caption:

caption always "%{= kc}Screen session on %H (system load: %l)%-28=%{= .m} %Y-%m-%d %0c"

и вы получите в самом низу одну линию, которая всегда будет видна и окрашена.

Screen session on host (system load: 1.50 1.40 1.30)        2017-04-23 14:06

Обратите внимание:

Когда вы находитесь внутри экрана на host1 и открываете другой сеанс SSH для host2 и открываете экран там, где также есть .screenrc, вы получите две строки внизу, уложенные снизу вверх (как обертка).

Это ОЧЕНЬ полезно в этом случае!

Screen session on host2 (system load: 0.01 0.03 0.05) 2017-04-23 14:14 Screen session on host1 (system load: 0.00 0.00 0.00) 2017-04-23 14:14


Дополнительная информация:

https://www.gnu.org/software/screen/manual/html_node/Caption.html

Command: caption always|splitonly [string]

https://www.gnu.org/software/screen/manual/html_node/String-Escapes.html#String-Escapes


Я нашел этот хит здесь на SO.

Ответ 5

Проверить переменную $TERM