如何判斷是否正在tty下使用screen/tmux - Linux

Sarah avatar
By Sarah
at 2011-09-21T17:41

Table of Contents

※ 引述《Holocaust123 (一步一腳印)》之銘言:
: 我通常是用"tty"這個指令判斷是否正在tty下
: 例如
: 1. 在tty(1~6)時(假設在tty1)
: user@local_host:~$ tty
: /dev/tty/1 => tty
: 2. 在x11中使用gnome-termial時
: user@local_host:~$ tty
: /dev/pts/7 => pts
: 3. 用putty遠端到遠端Linux伺服器時
: user@remote_host:~$ tty
: /dev/pts/10 => pts
: 4. 在gnome-terminal中使用screen/tmux時
: user@local_host:~$ tty
: /dev/pts/8 => pts
: 不過
: 5. 在tty(1~6)中使用screen/tmux時
: user@local_host:~$ tty
: /dev/pts/8 => 恩...好希望它顯示的是tty = =
: 我希望在情況5.中, 能判斷出"我正在tty使用screen/tmux"
: 然而此時"tty"這個指令似乎就沒用了
: 請問有甚麼其他判斷方法嗎
: (除了印出$TERM之外
: 因為不論是在x或tty中attach screen, $TERM的內容都是一樣的
: 還有我不希望手動調整$TERM的內容)

目前試出來的分兩個部分 有很多可以改進的地方

(我只用過screen 就針對這部分)

1. 首先在開一個新的screen的狀況

.screenrc最後面加上這兩行
screen # 因為沒開個screen他不給exec 這邊應該有解決方法
exec bash -c 'echo $MYTTY > /tmp/screen_$STY'

在執行的時候使用
$ env MYTTY=`tty` screen

會這麼麻煩是因為只有在.screenrc 執行的時候才有$STY這個變數
會用$STY是為了要讓多個screen不會互相干擾
而一執行之後tty就變成screen裡的了
所以要在執行前先用$MYTTY存起來


2. 在attach的情況

screen -r [id] -X exec bash -c "echo `tty` > /tmp/screen_\$STY" && \
screen -r [id]

這邊是在-X參數就可以下了 所以方便一點 $STY一樣要到screen執行才有效
至於要怎麼alias 大概就比較複雜一點 可能會用function吧

那在screen裡面 讀/tmp/screen_$STY就有了



這麼麻煩是因為想不到怎麼對已經執行的process改他的env var才想到用檔案的方式

也蠻想知道有沒有更好的方法...

--
Tags: Linux

All Comments

Damian avatar
By Damian
at 2011-09-23T16:55
謝謝 我研究看看!

Pidgin無法登入(LMDE)

Yuri avatar
By Yuri
at 2011-09-21T13:20
Pidgin以前用好好的,這幾天突然無法登入,一直出現「等待網路連線」,可是我網路沒問題,也沒改什麼設定, 在VirtualBox的Windows版Pidgin卻是可以正常登入,有可能是哪邊出問題? 我用Linux Mint Debian -- ,_, (o,o) {`and#34;and#3 ...

Ubuntu存在但是無法在一開始雙系統登入

Mary avatar
By Mary
at 2011-09-21T11:48
如標題 當初雙系統一個win7一個Ubuntu 可是後來因為發生某些問題我win7要重灌 有4個硬碟區 我把win7的資料保留重灌 結果重新開機後就不會有雙系統的選擇而直接進入win7的介面 可是當我要安裝Ubuntu11.4他說我的Ubuntu10.04還存在 所以我覺得問題是Ubuntu10.04還存在可 ...

RHEL 6無法進入runlevel 5

Odelette avatar
By Odelette
at 2011-09-21T01:09
小弟是Linux新手+苦手 最近在用RHEL 6的過程中真是不斷地遭到打擊阿... 首先, 先簡述我的硬體 CPU:AMD X4 640 RAM:8G DDR3 MB :ASUS M4A88TDM 再來, 狀況是這樣的 今天安裝好RHEL6之後, 裝了ATI的fglrx驅動 然後依照系統的要求更新完了大約3 ...

如何判斷是否正在tty下使用screen/tmux

Una avatar
By Una
at 2011-09-21T00:17
我通常是用and#34;ttyand#34;這個指令判斷是否正在tty下 例如 1. 在tty(1~6)時(假設在tty1) useratlocal_host:~$ tty /dev/tty/1 =andgt; tty 2. 在x11中使用 ...

BBS字型

Frederic avatar
By Frederic
at 2011-09-20T23:52
新版 1.6 昨天release 加上參數-s 80x24就可以正常瀏覽一些不支援長螢幕的bbs站了 ※ 引述《scp958630 (日立安)》之銘言: : 標題: Re: [問題] BBS字型 : 時間: Thu Aug 4 11:19:00 2011 : : 以下是適用於每個BBS站 : 不須依賴 ...