Changer $ TERMINFO dans le script bashrc

TERMINFO="$HOME/.terminfo" mettre TERMINFO="$HOME/.terminfo" dans mon script .bashrc . La raison en est que mon terminal n'est pas dans l'location du système terminfo , et donc j'ai son file terminfo dans mon directory personnel.
Le problème ici est que la modification ne prend pas effet pour le shell courant, seulement les sous-shell. Je suppose que c'est parce que readline est en cours d'initialisation avant bash lit le file .bashrc .

Donc y a-t-il un moyen de résoudre ce problème? Peut-être un moyen de ré-initialiser readline de sorte que le $TERMINFO changé a $TERMINFO effet?
J'essaie d'éviter de faire un exec bash après l'avoir mis en place, car alors je dois m'assurer que je ne me retrouve pas dans une boucle de ré-exécution, et c'est juste moche (bien que faire exec bash après le réglage fonctionne).

EDIT: Il ne s'agit pas d' un problème lors de l'exécution du script. Je sais que le script .bashrc est en cours d'exécution et que $TERMINFO est en cours de définition. L'exécution de l' echo $TERMINFO après le echo $TERMINFO du shell montre la valeur correcte.

EDIT2: Il semble que ce soit bash ou readline version de la bibliothèque liée. Je ne peux pas dupliquer le problème avec bash-4.2.20 et readline-6.2_p1, mais je peux avec bash-3.2 et readline-5.1.3.

"Non" est une réponse acceptable si ce n'est pas possible. Mais ce serait bien de savoir ce qui se passe que la réponse soit "non".

Donc après avoir creusé un peu plus, j'ai trouvé ce qui se passait. La version de bash de RHEL5 n'utilise pas le terminfo du tout (pourquoi, qui sait, son redhat), il utilise termcap. Cependant il y a apparemment un autre bash sur la boite qui utilise terminfo. C'est pourquoi les sous-shell et la ré-exécution fonctionneraient, car ils utiliseraient l'autre bash, pas celui par défaut. Je me sens stupide de ne pas remarquer cela.

Cela peut être déterminé à partir de la comparaison de deux commands:

 # ldd "$BASH" linux-vdso.so.1 => (0x00007fff4f1fd000) libtermcap.so.2 => /lib64/libtermcap.so.2 (0x0000003e0bc00000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003e07000000) libc.so.6 => /lib64/libc.so.6 (0x0000003e06c00000) /lib64/ld-linux-x86-64.so.2 (0x0000003e06800000) # ldd `which bash` linux-vdso.so.1 => (0x00007fff643fd000) libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x0000003e0d800000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003e07000000) libc.so.6 => /lib64/libc.so.6 (0x0000003e06c00000) /lib64/ld-linux-x86-64.so.2 (0x0000003e06800000) 

Remarquant que l'on est lié à libtermcap, et l'autre contre libncurses.

J'aurais dû préciser que j'utilisais RHEL ici, car c'est apparemment le facteur critique. Pourquoi ils utilisent termcap quand presque tout le monde dans le monde a abandonné cela n'a aucun sens, mais il est là.

De l' man bash – la section d'invocation:

Lorsque bash est appelé en tant que shell de connection interactif ou en tant que shell non interactif avec l'option –login, il lit et exécute d'abord les commands du file / etc / profile, si ce file existe. Après avoir lu ce file, il search ~ / .bash_profile, ~ / .bash_login et ~ / .profile, dans cet ordre, et lit et exécute les commands du premier qui existe et est lisible.

Pour configurer votre environnement, incluez la ligne terminfo (et toute autre variable d'environnement que vous souhaitez définir) dans .bash_profile ou .profile .

Voir cette réponse Superuser pour plus de détails .

bash ne lit que .bashrc quand il démarre.

Vous devez donc faire la source ~/.bashrc pour la recharger dans la session en cours.