操作系统:乌班图22.04
设想
在 Home 文件夹中,我创建了一个名为 的文件夹bin
。在此文件夹中,我克隆了我需要的 GitHub 存储库。
例如,我克隆了这个 golang 存储库在我的 bin 文件夹中(bin 文件夹位于 Home)。
存储库位置:/home/focus/bin/dontgo403/
我创建了一个名为 check403 的符号链接,因此可以从任何位置使用它:
cd /usr/local/bin
sudo ln -s ~/bin/dontgo403/dontgo403 check403
检查符号链接是否已正确创建:
readlink check403
/home/focus/bin/dontgo403/dontgo403
- 我导航到主文件夹,
(~)
从与安装位置不同的位置启动该程序:
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`).
- 根据程序描述(存储库),如果我使用参数
-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 $@
或添加别名。