我应该在哪里安装全局 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
和功能替换为一些不会重新打开光标闪烁的功能。cvvis
linux
其他系统没有这样好的内置覆盖:您必须手动创建该(或其他)目录,并使用TERMINFO
或TERMINFO_DIRS
环境变量显式地将其指向;另外,主 terminfo 目录可能不是/usr/share/terminfo/
, 而是/usr/gnu/share/terminfo/
其他目录。检查man ncurses
您的系统以获取所有详细信息。
还有一些系统(例如 FreeBSD)根本不支持 terminfo 并且仍在使用 termcap 格式。而且,让事情变得更加复杂的是,某些系统可能同时具有 ncurses 的基本实现和“端口”实现,每个系统都有自己的默认值应该是什么的想法。
答案2
它位于手册页:
- 所有 terminfo 实现都识别
TERMINFO
用于选择 terminfo 数据库的变量。 - ncurses 还可以识别目录搜索列表
TERMINFO_DIRS
- 默认位置(for
TERMINFO
或TERMINFO_DIRS
)是编译入的,并且在系统之间可能有所不同。有时打包者会记录位置(如果他们覆盖默认值)。
通常infocmp
(跨不同的实现)在输出开头的注释中显示找到终端描述的位置。
ncurses'tic
和infocmp
-D
选项显示它使用的位置。
进一步阅读:
- 如何设置私有 terminfo 数据库?(ncurses 常见问题解答)
- 它在哪些平台上运行?(ncurses 常见问题解答)