我下载了适用于 Ubuntu 的 VS Code.deb
文件。我将其重命名为vs.deb
。
然后我进入我的下载目录:
cd ~/Downloads
现在我在这里,我尝试安装它:
sudo apt install vs.deb
以下是我得到的结果:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package vs.deb
E: Couldn't find any package by glob 'vs.deb'
但是当我使用 安装它时./vs.deb
,它就会被安装:
sudo apt install ./vs.deb
为什么Linux不接受同一目录内的文件的名称而不需要相对路径?
答案1
您所经历的与 shell 无关,而是与命令如何apt
解释命令行上的参数有关。
它主要用于从软件存储库安装软件包。默认情况下,参数表示apt
软件源中软件包的名称。消息:
E: Unable to locate package vs.deb
清楚地表明vs.deb
软件源中不存在该包。
尽管如此,它仍apt
允许您直接安装下载的.deb
软件包文件并解决其依赖关系。您必须给出明确的文件路径来表明您想要安装文件.deb
。./vs.deb
已经表明文件路径:./
表示当前目录,因此 apt 将vs.deb
在当前目录中找到该文件。
实际上,shell 从来不会“找到”文件。shell 只是将参数传递给应用程序,而应用程序则负责解释这些参数。shell 最多会进行扩展(例如,*
用所有文件名或~
主文件夹的完整路径替换)或变量替换(例如,$HOME
用该变量的内容替换)。