忙碌盒子环境不显示LD_LIBRARY_PATH。

6

我们在一个嵌入式系统上使用Linux,该系统的各种shell命令中都安装了Busybox 1.20.2。我们遇到了一个非常奇怪的问题,即env命令不能显示LD_LIBRARY_PATH的值:

$ export LD_LIBRARY_PAT=/usr/bin
$ export LD_LIBRARY_PATH=/usr/bin
$ export LD_LIBRARY_PATH1=/usr/bin
$ env | sort
ENV=/etc/profile.environment
HISTFILE=/tmp/.ash_history.debug.357
HOME=/home/debug
LD_LIBRARY_PAT=/usr/bin
LD_LIBRARY_PATH1=/usr/bin
LOGNAME=debug
MAIL=/var/mail/debug
PATH=/home/debug/bin:/usr/bin:/bin:/usr/sbin:/sbin
PWD=/home/debug
PYTHONPATH=:/home/debug/tools/tools-0.0.0/common
SHELL=/bin/bash
SHLVL=1
SSH_CLIENT=10.10.10.22 58307 22
SSH_CONNECTION=10.10.10.22 58307 10.10.12.23 22
SSH_TTY=/dev/pts/0
TERM=xterm
USER=debug
_=/usr/bin/env
$ 
$ echo $LD_LIBRARY_PAT
/usr/bin
$ echo $LD_LIBRARY_PATH
/usr/bin
$ echo $LD_LIBRARY_PATH1
/usr/bin

从你所看到的情况来看,LD_LIBRARY_PATH已经被设置了,但是在env输出的结果中却没有显示出来。据我所知,这是唯一会发生这种情况的环境变量。

有人能解释一下为什么会出现这种情况吗?谢谢!


奇怪的问题... 它在root权限下能工作吗? - ErlVolton
你能用除了 env 以外的其他东西进行测试吗?比如 Python 或 Perl 等,看看它们是否正确继承了 LD_LIBRARY_PATH?busybox 是否明确禁止导出 LD_LIBRARY_PATH 呢? - Etan Reisner
1个回答

6

Linux不会让你搞乱LD_LIBRARY_PATH,因为busybox(很可能)已经设置了其setuid位。Busybox将许多常见的Linux命令构建到其二进制文件中,因此需要设置setuid。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接