Почему оболочка не находит файл в текущем каталоге только по его имени?

Я скачал .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 не принимает имя файла внутри того же каталога, не требуя относительного пути?

4
задан 28 August 2021 в 09:40

1 ответ

То, что вы испытываете, связано не с оболочкой, а с тем, как команда apt интерпретирует аргументы в командной строке.

В первую очередь он предназначен для установки пакетов из репозиториев программного обеспечения.По умолчанию аргумент apt означает имя пакета в источниках программного обеспечения. Сообщение:

E: Unable to locate package vs.deb

ясно указывает на то, что пакет vs.deb не существует в исходных кодах программного обеспечения.

Тем не менее, apt позволяет напрямую установить загруженный файл пакета .deb и разрешить для него зависимости. Вы должны указать явный путь к файлу, чтобы указать, что вы хотите установить файл .deb . ./ vs.deb уже указывает путь к файлу: ./ означает текущий каталог, поэтому apt найдет файл vs.deb в текущем каталоге.

На самом деле оболочка никогда не «находит» файл. Оболочка просто передает аргументы приложению, и приложение должно интерпретировать эти аргументы. В лучшем случае оболочка выполняет расширение (например, заменяет * всеми именами файлов или ~ полным путем к вашей домашней папке) или заменяет переменную (например, $ HOME заменяется содержимым этой переменной).

18
ответ дан 4 September 2021 в 09:27

Другие вопросы по тегам:

Похожие вопросы: