为什么我的 $LD_LIBRARY_PATH 在将 screen 与 bash 一起使用时未设置?

Ult*_*urd 6 linux bash gnu-screen

这与为什么我的 LD_LIBRARY_PATH 未设置启动终端有关?,但一组不同的症状。

首先,/usr/bin/screen根据另一个问题是 setuid 。其次,这个系统上的默认shell是/bin/tcsh由于各种历史原因,我们不允许chsh到/bin/bash,所以我通常在登录后立即手动运行bash。第三,我几乎总是使用 screen,但我希望在 screen 中使用 ctrl-a ctrl-c 来创建一个新的 bash“选项卡”,所以我总是先调用 bash。

那是:

{~} $ echo $SHELL
/bin/tcsh
{~} $ bash
[~] echo $SHELL
/bin/bash
[~] screen -U
[~]
Run Code Online (Sandbox Code Playgroud)

...当重新连接时:

{~} $ echo $SHELL
/bin/tcsh
{~} $ screen -dUr
[~] echo $SHELL
/bin/bash
[~] 
Run Code Online (Sandbox Code Playgroud)

但是,我$LD_LIBRARY_PATH在 tcsh 中,在 bash 中,但是一旦我运行 screen 就为空;如果我只是从 tcsh 运行屏幕,它仍然存在,但是当我在屏幕中使用 ctrl-a ctrl-c 时,我会得到新的 tcsh“标签”。

有任何想法吗?

Tob*_*obu 7

因为 screen 是 setuid,所以它 unsets LD_LIBRARY_PATH。当你的 shell 是 tcsh 时,tcsh 初始化(.tcshrc我想,因为 screen 不默认创建登录 shell)LD_LIBRARY_PATH再次设置。如果要LD_LIBRARY_PATH在 bash 屏幕窗口中进行设置,请从.bashrc.