为什么我无法运行从存档中提取的程序?

为什么我无法运行从存档中提取的程序?

下载了 Sage 档案后,火狐和雷鸟从 Trisquel 6.0 上各自的网站上,单击相应的 shell 脚本或执行命令来运行程序都不会打开它们。查看文件的权限,它们确实是可执行的。

编辑:Firefox 和 Thunderbird 现在已经神秘地开始工作;然而,Sage 仍然无法操作。从第一个链接下载后这一页,将其提取到我的桌面(Firefox 和 Thunderbird 可以正常运行),在终端中打开文件夹并运行命令“sage”(因为文件夹中有一个同名的可执行文件),我收到错误:bash: sage: command not found。然而ls -l 表明这些文件已知存在并且可执行。

编辑#2:我只认为 Firefox 和 Thunderbird 可以工作。我实际上正在运行我已经安装的版本。运行 Firefox 和/或 Thunderbird./[executable]会出现错误libxul.so: cannot open shared object file: No such file or directory Couldn't load XPCOM.

答案1

从存档中提取程序后首先要检查的是权限 ( chmod a+x ./sage),但如果这是问题所在,则错误消息将是“权限被拒绝”而不是“找不到命令”。

给出您的描述“在终端中打开文件夹并运行命令”,很可能您运行的命令sage期望在当前目录中执行具有此名称的程序。 Unix 不是这样工作的:shell 只在列出的目录中查找程序PATH环境变量。它不会首先隐式搜索当前目录。要运行当前目录中的程序,您需要输入其路径:

./sage

如果您想在不指定路径的情况下运行该程序,则需要将其安装在您的目录中$PATH(通常/usr/local/bin是 或~/bin)。将可执行文件与应用程序中的其他文件一起保留并创建一个文件通常很方便符号链接到以下目录中$PATH

ln -s /path/to/sage-5.9/sage ~/bin/

或者如果您已经位于包含二进制文件的目录中sage

ln -s $PWD/sage ~/bin/

如果您刚刚将程序添加到 PATH 中的目录,并且您的 shell 仍然抱怨找不到该命令,则可能是因为您之前尝试过并且您的 shell 将“未找到”信息保留在缓存中。运行hash -r以重建缓存并重试。下次启动 shell 时,这将不再是问题,因为在 shell 运行之间不会保存缓存。

如果您执行具有指定路径的现有文件,并且收到“找不到命令”错误消息,则可能是因为你没有合适的装载机。如果您下载了 CPU 和内核支持的二进制文件,但没有所需的用户态支持(无库),则可能会发生这种情况。如果程序是一个脚本,并且其舍邦线指的是您的系统上不存在的解释器(尽管典型的 shell 在这种情况下会给出“错误的解释器”消息,而不是“找不到命令”)。

答案2

请检查可执行文件的权限位。还要检查可执行文件是否包含在您的PATH.

相关内容