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

标签 c termios termcap

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

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

我也很担心,因为如果我启动 shell(如 zshtcsh ),我的某些按键就会出现问题。

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

最佳答案

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

类似这样的事情:

eval `tset -s vt100`

在 shell 中初始化就可以了。

实际上 tset 并不限于 termcap-systems,但这就是它的起点。

进一步阅读:

关于c - 我可以安全地设置 TERM 环境变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41807294/

相关文章:

c++ - Opengl-es 2.0中渲染三角形的问题

c - C代码怎么写?

python - "Inappropriate ioctl for device"来自带有管道的 termios

c - Termcap tgetstr 获取方向键

c - 骑士国际象棋C语言解决方案

c - 如何用表格制作 "global variable"?

c - linux 中的串行缓冲区有多长?

macos - 在 Swift 中使用 termios

python - 在终端上用python显示反视频文本

c - 为什么我无法检索从反引号内暂停的程序?