我正在写一个使用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