有一个ncurses6最初安装在用户主页目录中,假设"/home/test",因此在此ncurses路径上构建了一个测试环境,许多(正在开发中)应用程序被编译并正在工作,仅取决于当前的HOME env变量。
但是,由于我们无法控制的目的,我们必须更改用户主页目录。现在它与"/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
但是,有没有办法在不重新编译和重新安装 ncurses 的情况下使 TERMINFO 数据库路径永久化?编译过程中是ncures中的硬代码吗?
默认值已编译。 您可以使用环境变量覆盖它们(TERMINFO
是标准的, TERMINFO_DIRS
是扩展)。 这对 ncurses6 来说并不新鲜(它早于 ncurses4,二十年前)。
最实用的"永久"更改是将覆盖放在 shell 初始化中。
可以修改 ELF 二进制文件(没有校验和),但生成的路径不能更长。 它可以更短,因为字符串以 null 结尾。 由于您的示例添加到路径中,因此无论如何都对您不起作用。