【问题标题】:LD_PRELOAD in rlwrap?rlwrap 中的 LD_PRELOAD?
【发布时间】:2016-08-26 10:43:35
【问题描述】:

当我在脚本中执行某些操作时,例如

rlwrap -f words.txt LD_PRELOAD=mylib.so command "$@" 

我总是得到类似的东西

rlwrap: error: cannot execute LD_PRELOAD=mylib.so no such file or directory 

即使该文件完全存在并且删除 rlwrap 也可以正常工作。

如何将 LD_PRELOAD 放入 rlwrap?基本上我想让 mylib.so 只适用于我的'command'。

我确实尝试将 LD_PRELOAD=mylib.so 从 rlwrap 中放入,它运行,但 LD_PRELOAD 并未如我所愿适用于 command

【问题讨论】:

  • 在我看来 rlwrap 正在将 LD_PRELOAD=mylib.so 作为命令。你试过LD_PRELOAD=mylib.so rlwrap -f words.txt command "$@"
  • @Mort 是的,但那没用。然后 LD_PRELOAD 没有传递到命令中
  • 嗯。在我的系统上,LD_PRELOAD=/lib/libc.so.6 rlwrap sh -c 'echo $LD_PRELOAD' 打印 /lib/libc.so.6。如果它在您的系统上执行相同的操作,rlwrap 正在LD_PRELOAD 传递到 rlwrapped 命令的环境中
  • @HansLub 是的,但是链接器将 mylib.sorlwrap 链接,这是不希望的
  • @hek2mgl:这取决于。如果mylib.so 只定义了几个rlwrap 不使用的符号(这是一种常见情况),那么这样做是完全可以的。

标签: linux bash ld-preload rlwrap


【解决方案1】:

您可以将命令包装在 shell 中:

rlwrap -f words.txt bash -c 'LD_PRELOAD=mylib.so command "$@"' - "$@"

【讨论】:

  • hm,最后一部分:-"$@" 是做什么的?
  • 将当前shell的参数传递给子shell
猜你喜欢
  • 2019-09-21
  • 2018-05-04
  • 2015-01-05
  • 2018-12-20
  • 2013-02-12
  • 1970-01-01
  • 2011-11-13
  • 2011-06-20
  • 2023-04-08
相关资源
最近更新 更多