terminfo 是否提供 /usr/local/share 选项?

terminfo 是否提供 /usr/local/share 选项?

我应该在哪里安装全局 terminfo 文件?有没有/usr/local/share/terminfo?我宁愿不污染发行版的 terminfo 文件/usr/share/terminfo

答案1

我应该在哪里安装全局 terminfo 文件?

在典型的 GNU/Linux 机器上,您应该将它们放在 中/etc/terminfo,默认情况下会在其中查找它们。

大多数基于 Debian 或 Fedora/Redhat 的发行版都是这种情况,而且 Gentoo、Alpine 等也是如此 ——infocmp -D会告诉您系统上是否确实存在这种情况。在基于 Debian 的发行版上,tic当以 root 身份运行时,默认情况下也会在此处写入已编译的条目(使用 进行检查tic -D)。

/etc/terminfo当您想要覆盖 terminfo 条目时,该目录会派上用场——例如。将条目中的cnorm和功能替换为一些不会重新打开光标闪烁的功能。cvvislinux

其他系统没有这样好的内置覆盖:您必须手动创建该(或其他)目录,并使用TERMINFOTERMINFO_DIRS环境变量显式地将其指向;另外,主 terminfo 目录可能不是/usr/share/terminfo/, 而是/usr/gnu/share/terminfo/其他目录。检查man ncurses您的系统以获取所有详细信息。

还有一些系统(例如 FreeBSD)根本不支持 terminfo 并且仍在使用 termcap 格式。而且,让事情变得更加复杂的是,某些系统可能同时具有 ncurses 的基本实现和“端口”实现,每个系统都有自己的默认值应该是什么的想法。

答案2

它位于手册页

  • 所有 terminfo 实现都识别TERMINFO用于选择 terminfo 数据库的变量。
  • ncurses 还可以识别目录搜索列表TERMINFO_DIRS
  • 默认位置(forTERMINFOTERMINFO_DIRS)是编译入的,并且在系统之间可能有所不同。有时打包者会记录位置(如果他们覆盖默认值)。

通常infocmp(跨不同的实现)在输出开头的注释中显示找到终端描述的位置。

ncurses'ticinfocmp -D选项显示它使用的位置。

进一步阅读:

相关内容