Я скачал .deb
файл VS Code для Ubuntu. Я переименовал его в 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 не принимает имя файла внутри того же каталога, не требуя относительного пути?
То, что вы испытываете, связано не с оболочкой, а с тем, как команда apt
интерпретирует аргументы в командной строке.
В первую очередь он предназначен для установки пакетов из репозиториев программного обеспечения.По умолчанию аргумент apt
означает имя пакета в источниках программного обеспечения. Сообщение:
E: Unable to locate package vs.deb
ясно указывает на то, что пакет vs.deb
не существует в исходных кодах программного обеспечения.
Тем не менее, apt
позволяет напрямую установить загруженный файл пакета .deb
и разрешить для него зависимости. Вы должны указать явный путь к файлу, чтобы указать, что вы хотите установить файл .deb
. ./ vs.deb
уже указывает путь к файлу: ./
означает текущий каталог, поэтому apt найдет файл vs.deb
в текущем каталоге.
На самом деле оболочка никогда не «находит» файл. Оболочка просто передает аргументы приложению, и приложение должно интерпретировать эти аргументы. В лучшем случае оболочка выполняет расширение (например, заменяет *
всеми именами файлов или ~
полным путем к вашей домашней папке) или заменяет переменную (например, $ HOME
заменяется содержимым этой переменной).