在 compilation/installation 之后更改 ncurses 6 "terminfo-dirs"
Changing ncurses 6 "terminfo-dirs" after compilation/installation
最初在用户主目录中安装了一个 ncurses6,比方说“/home/test”,因此在这个 ncurses 路径上构建了一个测试环境,编译了许多(开发中的)应用程序并且是现在工作,仅取决于当前的 HOME 环境变量。
但是,由于我们无法控制的目的,我们必须更改用户主目录。现在它与“/home/test”完全不同。
外部应用程序和 ncurses 工具仍然有效,我们只需要使用 LD_LIBRARY_PATH 指向库并使用我们之前用于 ncurses 工具的更具体的路径:
LD_LIBRARY_PATH=~/bin/ncurses-6.0/lib ~/bin/ncurses-6.0/bin/tic
但是现在,在更改用户主目录后,我们还需要指向 terminfo 数据库:
TERMINFO=~/bin/ncurses-6.0/share/terminfo LD_LIBRARY_PATH=~/bin/ncurses-6.0/lib ~/bin/ncurses-6.0/bin/tic
但是,有没有什么方法可以使 TERMINFO 数据库路径永久化而无需重新编译和重新安装 ncurses?编译过程中是否在 ncurses 中硬编码?
默认值为compiled-in。您可以使用环境变量覆盖它们(TERMINFO
is standard, TERMINFO_DIRS
是一个扩展)。这对 ncurses6 来说并不新鲜(它早于二十年前的 ncurses4)。
最实用的 "permanent" 更改是将覆盖放在 shell 初始化中。
可以修改 ELF 二进制文件(没有校验和),但生成的路径不能更长。它 可以 更短,因为字符串是 null-terminated。由于您的示例添加到路径中,因此无论如何这对您不起作用。
最初在用户主目录中安装了一个 ncurses6,比方说“/home/test”,因此在这个 ncurses 路径上构建了一个测试环境,编译了许多(开发中的)应用程序并且是现在工作,仅取决于当前的 HOME 环境变量。
但是,由于我们无法控制的目的,我们必须更改用户主目录。现在它与“/home/test”完全不同。
外部应用程序和 ncurses 工具仍然有效,我们只需要使用 LD_LIBRARY_PATH 指向库并使用我们之前用于 ncurses 工具的更具体的路径:
LD_LIBRARY_PATH=~/bin/ncurses-6.0/lib ~/bin/ncurses-6.0/bin/tic
但是现在,在更改用户主目录后,我们还需要指向 terminfo 数据库:
TERMINFO=~/bin/ncurses-6.0/share/terminfo LD_LIBRARY_PATH=~/bin/ncurses-6.0/lib ~/bin/ncurses-6.0/bin/tic
但是,有没有什么方法可以使 TERMINFO 数据库路径永久化而无需重新编译和重新安装 ncurses?编译过程中是否在 ncurses 中硬编码?
默认值为compiled-in。您可以使用环境变量覆盖它们(TERMINFO
is standard, TERMINFO_DIRS
是一个扩展)。这对 ncurses6 来说并不新鲜(它早于二十年前的 ncurses4)。
最实用的 "permanent" 更改是将覆盖放在 shell 初始化中。
可以修改 ELF 二进制文件(没有校验和),但生成的路径不能更长。它 可以 更短,因为字符串是 null-terminated。由于您的示例添加到路径中,因此无论如何这对您不起作用。