【问题标题】:Setting the LD_PRELOAD environment variable for commands run without typing the full path为命令运行设置 LD_PRELOAD 环境变量而无需输入完整路径
【发布时间】:2012-05-05 23:13:42
【问题描述】:

我正在使用 LD_PRELOAD 并生成了一个库,该库仅将 puts() 包装在一个函数中,该函数在打印前将要打印的字符串转换为大写。然后我像这样导出 LD_PRELOAD 变量

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

现在运行命令时行为按预期工作

$ /bin/pwd
/HOME/ADRIAN/TEST

但是这样运行的时候就不行了

$ pwd
/home/adrian/test

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

【问题讨论】:

    标签: linux bash environment-variables ld-preload


    【解决方案1】:

    因为pwdshell builtin command - 请参阅man bashdocs here。所以如果你写

    $ pwd
    

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

    【讨论】:

    • 谢谢!经过快速搜索后,我发现我可以使用 enable -n pwd 禁用内置密码,现在它的行为符合预期。
    • @eltommo,哇,我不知道这种可能性。有趣!
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2019-10-30
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多