这篇 post 居然是在今年 1 月份的时候放到 draft 里,到现在才 publish……
因为用 intel 的编译器,所以设置了 LD_LIBRARY_PATH 这个环境变量,但是每次启动 screen 后这个环境本来都会被 unset。google 到的结果。
screen 可执行文件是 setuid 的(为了 share session,debian 的 screen 安装时默认没有 setuid),glibc 对这样的可执行文件会把那些“危险”的环境变量去掉,所以出现了上面的情况
解决办法两个
- 把 setuid 位去掉,当然这样 screen 的 share session 就不能工作了,还好一般用不到
- 把 LD_LIBRARY_PATH 的设置放到 .zshrc/.bashrc 之类的文件里去,这样每次启动 shell 的时候自然会把这个环境变量读入的
if [ -z $LD_LIBRARY_PATH ]; then export $LD_LIBRARY_PATH=XXX else export $LD_LIBRARY_PATH=$LD_LIBRARY_PATH:XXX fi
LD_LIBRARY_PATH 这个环境变量设置起来还真的挺麻烦的,系统的库目录和自己的库目录下有同名不同版本的库的时候,不是自己的程序有问题就是系统的程序有问题。