符号链接的可执行文件找不到依赖项

符号链接的可执行文件找不到依赖项

操作系统:乌班图22.04

设想

在 Home 文件夹中,我创建了一个名为 的文件夹bin。在此文件夹中,我克隆了我需要的 GitHub 存储库。

例如,我克隆了这个 golang 存储库在我的 bin 文件夹中(bin 文件夹位于 Home)。

存储库位置:/home/focus/bin/dontgo403/

  1. 我创建了一个名为 check403 的符号链接,因此可以从任何位置使用它:

    cd /usr/local/bin

    sudo ln -s ~/bin/dontgo403/dontgo403 check403

检查符号链接是否已正确创建:

readlink check403

/home/focus/bin/dontgo403/dontgo403
  1. 我导航到主文件夹,(~)从与安装位置不同的位置启动该程序:
    cd ~    
    check403 -u example.com

输出:

2023/01/01 13:38:43 open payloads/httpmethods: no such file or directory (This folder and these files are its dependencies located in the folder where it is installed > `~/bin/dontgo403`).
  1. 根据程序描述(存储库),如果我使用参数-f(指定位置),一切都会按预期工作:
check403 -f ~/bin/dontgo403/payloads -u example.com

我的问题是:如何运行程序而不总是指定其依赖项的位置,例如:check403 -u example.com(无需每次都指定:)-f ~/bin/dontgo403/payloads

在这种情况下,可以使用 -f 参数,但我遇到过其他未声明位置参数的脚本/程序,因此它们始终必须从安装位置运行。

答案1

目前尚不清楚您想在这里实现什么目标。您直接部署到 ~/bin,尽管是在子文件夹中,这意味着这仅由单个用户运行,但您正在 /usr/local/bin 中创建符号链接 o 将其公开给所有用户,甚至尽管他们不应该有访问你〜/ bin的权限

依赖关系路径在不同语言中通过不同方式标识 - 相对于可执行文件/来自 LD_PATH/来自配置文件中的设置/来自预定义位置......

不要创建符号链接来公开可执行文件,而是将其包装在 /usr/local/bin 或 ~/bin 中的简单 shell 脚本中:

#!/bin/bash

~/bin/dontgo403/dontgo403 $@

或添加别名。

相关内容