为命令设置LD_PRELOAD环境变量而不键入完整路径

时间:2012-04-25 09:23:49

标签: linux bash environment-variables ld-preload

我正在玩LD_PRELOAD并且已经生成了一个库,它简单地将puts()包装在一个函数中,该函数在打印之前将要打印的字符串转换为大写。然后我将LD_PRELOAD变量导出为

$ export LD_PRELOAD=/home/adrian/test/myputs.so

现在,在运行命令

时,行为按预期工作
$ /bin/pwd
/HOME/ADRIAN/TEST

但是当像这样运行时它不起作用

$ pwd
/home/adrian/test

在这种情况下,导致LD_PRELOAD环境变量被忽略的机制是什么?

1 个答案:

答案 0 :(得分:3)

由于pwdshell builtin command,请参阅man bashdocs here。所以,如果你写

$ pwd

然后启动内置命令。如果你告诉它路径,它将执行ELF二进制文件并使用LD_PRELOAD。