Re: [問題] 如何判斷是否正在tty下使用screen/tmux
※ 引述《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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):