我正在编写一个使用 termcaps 的程序,我需要知道我正在使用哪种终端。
我知道我可以获得 TERM
变量通过 getenv("TERM")
,但我可以使用“$ env -i ./myprog
”启动我的程序,并且不会设置术语。
那么我如何确定必须使用哪种终端类型?
我可以安全地设置TERM
变量为xterm/xterm-256color
在我的应用程序中?
会导致不可移植性问题吗?
有没有一种方法可以安全地执行此操作(获取术语类型)?
我已经红色了许多手册(getty - getttab - tty - ttys)和帖子,但我找不到任何解决方案。
我也很担心,因为如果我启动 shell(如 zsh
或 tcsh
),我的某些按键就会出现问题。
例如启动zsh
像这样:
$env -i zsh
会导致箭头和任何暗示 termcaps 的键(甚至 Ctr-d)出现问题。
相反bash
和tcsh
在许多键上都会表现正常,但不是全部。
最佳答案
如果您实际上正在使用 termcap(而不是某些最小实现,例如 busybox),则您可能使用提供 tset
的系统,该系统可以为用户提供 的默认选择>可修改的术语
。
类似这样的事情:
eval `tset -s vt100`
在 shell 中初始化就可以了。
实际上 tset
并不限于 termcap-systems,但这就是它的起点。
进一步阅读:
- tset, reset -- terminal initialization (FreeBSD)
- tset, reset - terminal initialization (ncurses)
- tset, reset - terminal initialization (NetBSD)
关于c - 我可以安全地设置 TERM 环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41807294/