Ответ 1
Проверьте переменную среды $STY (содержит информацию о экране) или для $TERM, являющегося "экраном" (вероятно, менее надежным).
У меня есть команда, которую я хочу выполнить в .bashrc
, только когда текущий терминал
Окно управляется экраном GNU. Как мне это сделать? Есть ли переменная среды? Раньше я имел
if [ -n "$WINDOW" ]; then command fi
Но из того, что я могу сказать, $WINDOW
может или не может быть определен на всех экранах
управляемые сеансы.
Проверьте переменную среды $STY (содержит информацию о экране) или для $TERM, являющегося "экраном" (вероятно, менее надежным).
ссылка правильная
См. документ
http://www.gnu.org/software/screen/manual/html_node/Environment.html
STY
Альтернативное имя сокета. Если вызывается
screen
, а переменная средыSTY
установлена, то она создает только окно в текущем сеансеscreen
вместо запуска нового сеанса.
check $TERM
, он установлен на 'screen
' в сеансе сеанса.. (но не на 100% гарантированно)
UPDATE
В качестве альтернативы вы можете использовать тот факт, что на экране $TERMCAP
содержит подстроку экрана:
[[ $TERMCAP =~ screen ]] && echo "in screen"
также не гарантируется на 100%
UPDATE2
Если ни один из подходов не работает, вы можете найти вдохновение в экранное руководство
Я хотел бы предложить альтернативное решение, которое всегда видно и не требует проверки того, что вы находитесь внутри сеанса 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.
Проверить переменную $TERM