只有噹噹前終端 窗口由GNU屏幕管理時,我纔有一個命令我想在.bashrc
執行。我該怎麼做呢?有沒有一個環境變量?我曾經有如何判斷當前終端會話是否在GNU屏幕中?
if [ -n "$WINDOW" ]; then command fi
但是,從我可以告訴,$WINDOW
可能會或可能不會在所有屏幕 管理會話定義。
只有噹噹前終端 窗口由GNU屏幕管理時,我纔有一個命令我想在.bashrc
執行。我該怎麼做呢?有沒有一個環境變量?我曾經有如何判斷當前終端會話是否在GNU屏幕中?
if [ -n "$WINDOW" ]; then command fi
但是,從我可以告訴,$WINDOW
可能會或可能不會在所有屏幕 管理會話定義。
檢查環境變量$ STY一些啓發(包含屏幕信息)或$ TERM是'屏幕'(可能不太可靠)。
我一直在使用到目前爲止使用$ TERM的貨物崇拜腳本。感謝你!只是爲了讓它變得更糟,腳本運行的一些框具有如此舊的bash版本,以致條件限制(例如,沒有部分匹配) – Jan 2013-05-11 18:08:47
檢查$TERM
,它在屏幕上會被設置爲 'screen
'。(但不能保證100%)
UPDATE
或者,您也可以使用,在屏幕上,$TERMCAP
包含的事實屏幕串:
[[ $TERMCAP =~ screen ]] && echo "in screen"
也不能100%保證
UPDATE2
如果兩種方法都無效,你可以找到在screen manual
屏幕似乎從啓動終端會話繼承$ TERM值。所以在我的情況下,它是xterm-256color,它取決於環境。我想要的是可以在所有環境下工作的通用解決方案。 – OTZ 2010-08-12 21:49:25
@otz我很害怕這樣:)更新了另一種可能性 – mykhal 2010-08-12 21:58:24
$ TERMCAP方法適用於更多的情況,但錯過了在同一屏幕窗口下SSH連接到其他主機的情況,在這種情況下$ TERMCAP不會包含「屏幕」子。因此,適用性與$ WINDOW完全相同,因爲一旦你ssh到其他主機,它的價值也會丟失。但是所有事情都一樣,$ WINDOW謂詞的運行速度更快。 – OTZ 2010-08-12 22:07:10
signine是正確的
看到該文檔
http://www.gnu.org/software/screen/manual/html_node/Environment.html
STY
備用插座名稱。如果調用
screen
,並且設置了環境變量STY
,那麼它將在運行的screen
會話中僅創建一個窗口,而不是啓動新的會話。
我想建議一個總是可見的替代解決方案,並且不需要檢查就知道你在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
我發現這個打here上SO。
可能重複[如何判斷我是否在屏幕上?](http://stackoverflow.com/questions/5392618/how-can-i-tell-whether-im-in-a屏幕) – LopSae 2014-02-14 01:45:02