This is related to Why does my LD_LIBRARY_PATH get unset launching terminal?, but a different set of symptoms.
First, /usr/bin/screen
is setuid as per the other question. Second, the default shell on this system is /bin/tcsh
for various historical reasons, and we're not allowed to chsh to /bin/bash
, so I typically run bash manually immediately after login. Third, I almost always use screen, but I want ctrl-a ctrl-c in screen to create a new bash "tab", so I always invoke bash first.
That is:
{~} $ echo $SHELL
/bin/tcsh
{~} $ bash
[~] echo $SHELL
/bin/bash
[~] screen -U
[~]
…and when reconnecting:
{~} $ echo $SHELL
/bin/tcsh
{~} $ screen -dUr
[~] echo $SHELL
/bin/bash
[~]
However, my $LD_LIBRARY_PATH
is there in tcsh, there in bash, but empty once I run screen; it is still present if I just run screen from tcsh, but then I get new tcsh "tabs" when I use ctrl-a ctrl-c in screen.
Any ideas?
Best Answer
Because screen is setuid, it unsets
LD_LIBRARY_PATH
. When your shell is tcsh, tcsh initialisation (from.tcshrc
I suppose, since screen doesn't default to creating login shells) setsLD_LIBRARY_PATH
again. If you wantLD_LIBRARY_PATH
to be set in your bash screen windows, set it from.bashrc
.