如果可执行文件被符号链接到已添加到 $PATH 的文件夹中,那么用户应该能够从任何地方执行可执行文件,对吗?

问题描述 投票:0回答:1

我在我的arch中安装了许多程序,安装程序后可执行文件被符号链接到$HOME/.local/bin。并且文件夹 $HOME/.local/bin 已添加到 $PATH 变量中。但我仍然无法仅通过从文件系统中的任何位置调用该程序来执行该程序。忘记完成。如果我尝试仅通过调用程序名称来运行该程序,则该程序将无法运行,即使在 $HOME/.local/bin 内也无法运行。假设程序是“cowsay”,那么它会显示“zsh:未找到命令:cowsay”。但如果在我的 $HOME 目录中运行,

./.local/bin/coway -t hi
程序运行良好。如果我写
cowsay -t hi
它会给我错误
zsh: command not found: cowsay
。即使我在 $HOME/.local/bin 目录中并写入
cowsay -t hi
,它也会抛出说错误,除非我输入
./cowsay -t hi
。 不应该这样写吗?添加到 $PATH 的目录内的可执行文件应该可以从任何地方使用,即使可执行文件是符号链接?对吗?

还有许多其他程序,例如 matlab,它会自动符号链接它的可执行文件,但我无法仅通过调用它们的名称来访问它们。

我想到的一个解决方案是,我可以在 $HOME/.local/bin 中制作一个具有相同名称的可执行脚本(例如 matlab)。在该可执行文件中我可以编写

#!/usr/bin/env sh
cd /path/to/matlab
./matlab

或者我可以随时给它起别名。 但我想知道哪里出了问题? 如果可执行文件不可用,为什么 matlab 在其 gui 中提供一个选项来符号链接其他文件夹中的可执行文件? 请告诉我。

matlab path alias executable symlink
1个回答
0
投票

看起来可执行标志没有设置。当您键入命令名称时,只会考虑带有可执行标志的文件,除非您明确给出路径(例如

./coway
)。

您可以使用

进行设置
chmod a+x ~/.local/bin/coway
© www.soinside.com 2019 - 2024. All rights reserved.