我正在寫一個使用termcaps的程序,我需要知道我正在使用哪種終端。
我知道我可以通過getenv("TERM")
獲得TERM
變量,但是我可以用「$ env -i ./myprog
」啓動我的程序,並且不會設置TERM。我可以安全地設置TERM環境變量嗎?
那麼如何確定我必須使用哪種終端類型?
我可以在我的應用程序中安全設置TERM
變量爲xterm/xterm-256color
嗎?
它會導致不可移植性問題嗎?
有沒有一種方法可以安全地執行此類操作(獲取termtype)?
我已經紅了很多手冊(getty - getttab - tty - ttys)和帖子,但是我找不到任何解決方案。
我也很擔心,因爲如果我啓動一個shell(如zsh
或tcsh
),我有一些鍵的問題。
例如啓動zsh
像這樣:
$env -i zsh
將導致用箭頭和暗示的termcap(甚至CTR-d)的任何鍵的麻煩。
相反,bash
和tcsh
將在許多按鍵上正常運行,但不是全部。
的TERM-變量存在精確地確定終端類型中使用,幾乎沒有另一種通用的方式來猜測終端類型並設置TERM。你可以讓用戶選擇一個終端,如果它沒有設置,或者嘗試默認'vt100',因爲這是經常使用的。 – Ctx
我想獲得比可能的應用程序更便攜,所以我想如果我選擇設置爲默認vt100我可以有一天的可移植性問題? – LotoLo
不,如果使用的終端仿真與vt100不兼容,它將無法正常工作。可移植的方式是:依賴TERM環境變量的設置;如果沒有設置,用戶必須修復他的環境 – Ctx