Setting the LD_PRELOAD environment variable for commands run without typing the full path
-
03-06-2021 - |
Domanda
I'm playing around with LD_PRELOAD and have produced a library that simply wraps puts() in a function that converts the string to be printed to uppercase before printing. I then export the LD_PRELOAD variable as so
$ export LD_PRELOAD=/home/adrian/test/myputs.so
Now the behaviour works as expected when running the command
$ /bin/pwd
/HOME/ADRIAN/TEST
But it does not work when runing like this
$ pwd
/home/adrian/test
What is the mechanism that's causing the LD_PRELOAD environment variable to be ignored in this case?
Soluzione
Becausepwd
is shell builtin command
- see man bash
or docs here. So if you write
$ pwd
Then the builtin command is launched. If you tell it the path, it will execute the ELF binary and use the LD_PRELOAD.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow