Рейтинг:4

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

флаг cn

Я скачал VS Code .deb файл для убунты. я переименовал его в против деб.

Затем я иду в свой каталог загрузок:

компакт-диск ~/Загрузки

И теперь, когда я здесь, я пытаюсь установить его:

sudo apt установить vs.deb

И вот что я получаю:

Чтение списков пакетов... Готово   
Построение дерева зависимостей          
Чтение информации о состоянии... Готово   
E: Не удалось найти пакет vs.deb   
E: Не удалось найти пакет по glob 'vs.deb'

Но когда я устанавливаю его с помощью ./vs.deb, затем он устанавливается:

sudo подходящая установка ./vs.deb

Почему Linux не принимает имя файла в том же каталоге, не требуя относительного пути?

David avatar
флаг cn
Определен ли текущий каталог в каком-либо операторе PATH? Я думаю, нет, поэтому вам нужен ./ Это хорошо известное и не глупое поведение.
Kulfy avatar
флаг mz
Отвечает ли это на ваш вопрос? [Как установить файл .deb через командную строку?](https://askubuntu.com/questions/40779/how-do-i-install-a-deb-file-через-командную-строку) Цитата из [ответа Брайама] (https://askubuntu.com/a/769542): * «Даже если вы находитесь в каталоге с пакетом, вам нужно указать путь, используя `./` в начале» *
guiverc avatar
флаг cn
Вы пытаетесь установить файл; поэтому нужен путь. Ваша команда без пути - загрузить и установить указанное вами имя пакета (более безопасно не делать предположений, что это может быть файл, а пакет в утвержденном источнике).
Peter Cordes avatar
флаг fr
@David: Если вы говорите о переменной среды `PATH`, например. `/usr/local/bin:/bin:...` тогда нет, для `apt` не имеет смысла искать `$PATH` для файлов `.deb`, указанных в качестве аргументов. Кверент сделал неверное предположение о релевантности оболочки. Ваш комментарий может ввести в заблуждение новичков, которые не понимают, что на самом деле он неприменим; Я бы предложил удалить его.
Рейтинг:19
флаг cn

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

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

E: Не удалось найти пакет vs.deb

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

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

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

chrylis -cautiouslyoptimistic- avatar
флаг er
Возможно, раскрытие фигурных скобок _действительно_ квалифицируется как "поиск" файлов.
Peter Cordes avatar
флаг fr
Предшественник `apt`, `apt-get`, никогда не мог использовать .deb в качестве параметра командной строки, только имя пакета; вам пришлось использовать `dpkg -i` для установки файла .deb. Так что есть исторический прецедент, когда высокоуровневые инструменты пакетов Debian *не* интерпретировали аргументы как пути, по крайней мере, по умолчанию.
флаг cn
@chrylis-cautiouslyoptimistic- Расширение скобок не имеет ничего общего с файлами, это чисто текстовое преобразование. Расширение подстановочных знаков, с другой стороны, ищет совпадающие файлы.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.