我正在玩LD_PRELOAD并且已经生成了一个库,它简单地将puts()包装在一个函数中,该函数在打印之前将要打印的字符串转换为大写。然后我将LD_PRELOAD变量导出为
$ export LD_PRELOAD=/home/adrian/test/myputs.so
现在,在运行命令
时,行为按预期工作$ /bin/pwd
/HOME/ADRIAN/TEST
但是当像这样运行时它不起作用
$ pwd
/home/adrian/test
在这种情况下,导致LD_PRELOAD环境变量被忽略的机制是什么?
答案 0 :(得分:3)
由于pwd
为shell builtin command
,请参阅man bash
或docs here。所以,如果你写
$ pwd
然后启动内置命令。如果你告诉它路径,它将执行ELF二进制文件并使用LD_PRELOAD。