我们在具有busybox 1.20.2的嵌入式系统上使用linux,用于各种shell命令。我们遇到一个非常奇怪的问题,即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的输出中。 AFAIK,它是唯一发生这种情况的环境变量。
任何人都可以解释为什么会这样吗?谢谢!
答案 0 :(得分:5)
Linux won't let you mess with the LD_LIBRARY_PATH因为busybox(可能)的setuid位已打开。 Busybox在其二进制文件中内置了一堆常见的linux命令,因此需要setuid。