0

有一个 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 在编译期间是硬代码吗?

4

1 回答 1

0

默认值是编译的。您可以使用环境变量覆盖那些(TERMINFO是标准的,TERMINFO_DIRS是扩展的)。这对 ncurses6 来说并不新鲜(它早于 ncurses4,二十年前)。

最实用的“永久”更改是将覆盖放在您的 shell 初始化中。

可以修改 ELF 二进制文件(没有校验和),但生成的路径不能再长了。它可能更短,因为字符串以空值结尾。由于您的示例添加到路径中,因此无论如何这对您不起作用。

于 2017-01-21T01:15:38.153 回答