0

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

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


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

例如,zsh像这样启动:
$env -i zsh
将导致箭头和任何暗示 termcaps 的键(甚至 Ctr-d)出现问题。
相反bashtcsh它将在许多键上正常运行,但不是全部。

4

2 回答 2

1

如果您实际上使用的是 termcap(而不是一些最小的实现,例如busybox),您可能正在使用提供的系统tset,它可以为用户提供TERM可以修改的默认选择。

像这样的东西:

eval `tset -s vt100`

在 shell 初始化中会起作用。

实际上tset并不局限于 termcap-systems,但这就是它开始的地方。

进一步阅读:

于 2017-01-30T01:46:41.813 回答
0

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

于 2017-01-23T13:27:35.787 回答