Re: [問題] 如何判斷是否正在tty下使用screen/tmux

看板Linux作者 (大資佬)時間12年前 (2011/09/21 17:41), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《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才想到用檔案的方式 也蠻想知道有沒有更好的方法... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.46 ※ 編輯: ckclark 來自: 140.112.30.46 (09/21 17:44)

09/21 20:07, , 1F
謝謝 我研究看看!
09/21 20:07, 1F
文章代碼(AID): #1EUR5Ips (Linux)
文章代碼(AID): #1EUR5Ips (Linux)