Управление пакетами и хранилища программного обеспечения
В дистрибутивах Linux на основе Debian используются репозитории (базы данных пакетов установки приложений и пакетов обновлений) для обновления операционных систем, а также для простого извлечения и установки новых пакетов программного обеспечения. Местоположение этих репозиториев хранится в /etc/apt/sources.list, однако в /etc/apt/sources.list.dкаталоге могут храниться дополнительные источники, обычно уникальные для конкретных приложений .
Когда выполняется команда обновления индекса пакета apt-get update, ваша операционная система проверяет с помощью этих репозиториев пакетов доступные пакеты и регистрирует доступные программные продукты как доступные для вашей операционной системы, которые вы можете продолжить устанавливать с помощью традиционной apt-get install <package>команды.
Пример одного из этих источников программного обеспечения:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
Для этих источников важно ссылаться на конкретные версии дистрибутивов Linux. В качестве примера можно привести верное кодовое имя для Ubuntu 14.04. Вы можете запросить вашу ОС (на основе Debian) для получения полной информации с помощью lsb_release -aили lsb_release -scчто означает сокращенное и кодовое имя .
В вашем вопросе, часть $(lsb_release -sc)интерпретируются и результат от операционной системы печататься в пользовательском исходных файлы РОС-latest.list которой команда будет создавать при исполнении.
Переводчик командного языка
Команда sh- оболочка Борна . Это один из нескольких оболочек, но он считается старым стандартом, и, как правило, вы можете быть уверены, что он существует. Это также часто встречается bashво многих сценариях оболочки. В этом объявлении указывается оболочка для использования, так как разные оболочки используют разный синтаксис.
Что касается -cфлага, цитирую man bash:
Если указана опция -c, то команды читаются из строки. Если после строки есть аргументы, они присваиваются позиционным параметрам, начиная с $ 0.
Все, что внутри, ''читается как строка, вам не нужно разбираться, как избежать различных кавычек или беспокоиться о том, что оболочка интерпретирует что-то неправильно.
ТЛ; др
Команда печатает deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) mainв пользовательский исходный файл, заменяя $(lsb_release -sc)его интерпретированным значением.