我正在编写一个使用termcaps的程序,我需要知道我正在使用哪种终端
我知道我可以通过TERM
获取getenv("TERM")
变量,但我可以使用“$ env -i ./myprog
”启动我的程序,并且不会设置TERM。
那么如何确定我必须使用哪种终端类型?
我可以在申请表中安全地将TERM
变量设置为xterm/xterm-256color
吗?
它会导致不可移植性问题吗?
有没有办法安全地做到这一点(获得termtype)?
我有很多手册(getty - getttab - tty - ttys)和帖子,但我找不到任何解决方案。
我也很担心,因为如果我启动一个shell(比如zsh
或tcsh
),我会遇到一些问题。
例如像这样启动zsh
:
$env -i zsh
箭头和任何暗示术语的键(甚至是Ctr-d)都会引起麻烦
相反,bash
和tcsh
会在许多键上正常运行,但不是全部。
答案 0 :(得分:1)
如果你实际上使用的是termcap(而不是像busybox这样的最小实现),你可能会使用提供tset
的系统,它可以为用户提供TERM
的默认选择可以修改。
这样的事情:
eval `tset -s vt100`
在shell初始化中会起作用。
实际上tset
并不仅限于termcap系统,而是它开始的地方。
进一步阅读:
答案 1 :(得分:0)
将TERM=vt100
设置为默认值(Ctx的建议)是(有些)安全的,因为大多数终端仿真器都设置为模拟它。不过,我建议你在这种情况下打印警告。