【问题标题】:How can I prevent finding executable on $PATH?如何防止在 $PATH 上找到可执行文件?
【发布时间】:2012-03-02 19:50:24
【问题描述】:

我使用的系统安装不完整,GNAT 是 GNU Ada 编译器。一个脚本(在 gdb 测试套件中)正在查找 /usr/bin/gnatmake 并假设它可以运行 Ada 编译。这些失败是因为链接器找不到libgnat.so

我没有 root 访问权限,因此无法安装 libgnat.so 或删除 /usr/bin/gnatmake

有什么方法可以阻止脚本在/usr/bin 中找到 gnatmake?我显然无法从路径中删除/usr/bin

【问题讨论】:

  • 你不能配置你的脚本调用,或者改变它,让你的/usr/bin/gnatmake被忽略吗?或者你不能把/usr/bin 放在你的路径深处吗?
  • 如果没有 root 访问权限,您可能无能为力,除非可以将脚本配置为显式忽略它。即使它在 PATH 的深处,如果它在路径中,脚本仍然会找到它......
  • @NiklasB。在 Ada 编译器中有选项
  • @Sam:我希望,作为非 root 用户,您应该无法在 /usr/bin 中使用 chmod 任何内容。 OP 说他无法访问 GNAT 安装。

标签: linux path


【解决方案1】:

您可以安装gnatmake 的私有工作版本吗?

如果可以,您可以在$HOME/bin 目录中创建指向gnatmake 工作版本的符号链接:

ln -s /path/to/real/gnatmake ~/bin/gnatmake

然后将你自己的$HOME/bin 目录插入到你的$PATH

export PATH="$HOME/bin:$PATH"

现在,shell 会在 /usr/bin 之前找到您的 gnatmake 版本。

【讨论】:

    【解决方案2】:

    尝试sudo自己的脚本 (sudo -u you ./script)。如果您不允许sudo,您也可以尝试exec VAR=val ./script。第三种方法是将另一个目录添加到 $PATH 并使用“假”空脚本来隐藏 ADA 文件。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 2019-01-16
      • 2015-01-25
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2021-11-23
      相关资源
      最近更新 更多