前言
linux screen 是一個非常方便我們管理終端機視窗的工具,
我們有時候可能在某一台電腦 terminal 操作到一半,
突然會有需要換一台電腦,但又想要接續操作同一個 terminal 的內容,
這時候 screen 可以幫助我們無縫切換這件事情。
(也就是說,在 A 電腦上面顯示的所有 terminal 內容,可以直接顯示在 B 電腦 terminal 上)
只有 terminal 當下分頁的全部內容,並沒有其他的視窗哦XD
要其它視窗,你想要找的應該是 anydesk, teamviewer 之類的XD
另外一個個人覺得很大的優點
當如果是使用筆電操作遠端 terminal 的時候,
如果當要移動,筆電合起來勢必「連線會中斷,導致任務中斷」
使用 screen 就可以「讓任務在背景持續進行,就算要移動也不怕中斷任務」,
而且可以「隨時再啟動同樣的畫面!!!」
詳細介紹可以參考我之前的文:
【Linux】透過 screen 讓 terminal 內的工作內容可以無縫接軌到任何電腦 (儲存當下 terminal 內容),並可以繼續操作
那麼今天這篇文要來討論什麼呢?
screen 很方便我們現在知道了,
但問題是「每次打開終端機的時候,我們都還要手動去輸入 screen 來啟動 screen」,
「但絕大部分我們所要需求 screen 的情況,到了當下才啟動 screen 一切都要重來了!!!」
但反過來說,如果反向操作的話,反而就沒有這個問題,
因為「以 screen 啟動的 terminal 對使用者來說跟原生的根本沒差!」
因此,我們要來研究「一開啟 terminal 就能夠啟動 screen 的方法」
一開啟 terminal 就能夠啟動 screen 的方法
其實這說起來要實現也不難,我們只需要透過修改 zshrc 並新增 screen 這行指令,
照理來說應該就沒問題了吧!!!
「不!!!有個巨大的麻煩!!!」
巨大的麻煩
我們試著去想,照上面的修改會發生什麼事,
因為預設啟動 screen,而透過 screen 啟動的 terminal 會再啟動一次 screen,
而這個又再次透過 screen 啟動的 terminal 會再啟動一次 screen,
…懂了嗎,這就是無窮迴圈的感覺呢!
所幸,screen 預設有迴圈上限,超過 99 次就會被強制擋下來了。
作者是不是連這點都想到了XDDD
解決 screen 迴圈問題
mac
為了解決這個問題,我們需要先來研究一下 screen 造成環境參數的不同,
在沒有 screen 的 terminal 下
echo $TERM
我們得到
啟動 screen 後
ok,光是這樣的差異就夠我們設定了XD,還可以完全避免迴圈
結論:在 mac 的 ~/.zshrc 中,請加上這一行
[[ $TERM != "screen" ]] && exec screen -q
ubuntu
為了解決這個問題,我們也需要先來研究一下 screen 造成環境參數的不同,
在沒有 screen 的 terminal 下
echo $TERM
我們得到
啟動 screen 後
ok,光是這樣的差異就夠我們設定了XD,還可以完全避免迴圈
結論:在 ubuntu 的 ~/.zshrc 中,請加上這一行
[[ $TERM != "screen.xterm-256color" ]] && exec screen -q