我可以安全地设置TERM环境变量吗?

时间:2017-01-23 13:15:11

标签: c termios termcap

我正在编写一个使用termcaps的程序,我需要知道我正在使用哪种终端 我知道我可以通过TERM获取getenv("TERM")变量,但我可以使用“$ env -i ./myprog”启动我的程序,并且不会设置TERM。

那么如何确定我必须使用哪种终端类型?
我可以在申请表中安全地将TERM变量设置为xterm/xterm-256color吗? 它会导致不可移植性问题吗? 有没有办法安全地做到这一点(获得termtype)? 我有很多手册(getty - getttab - tty - ttys)和帖子,但我找不到任何解决方案。

我也很担心,因为如果我启动一个shell(比如zshtcsh),我会遇到一些问题。

例如像这样启动zsh
$env -i zsh
箭头和任何暗示术语的键(甚至是Ctr-d)都会引起麻烦 相反,bashtcsh会在许多键上正常运行,但不是全部。

2 个答案:

答案 0 :(得分:1)

如果你实际上使用的是termcap(而不是像busybox这样的最小实现),你可能会使用提供tset的系统,它可以为用户提供TERM的默认选择可以修改。

这样的事情:

eval `tset -s vt100`
在shell初始化中

会起作用。

实际上tset并不仅限于termcap系统,而是它开始的地方。

进一步阅读:

答案 1 :(得分:0)

TERM=vt100设置为默认值(Ctx的建议)是(有些)安全的,因为大多数终端仿真器都设置为模拟它。不过,我建议你在这种情况下打印警告。