Gerenciamento de Pacotes e Repositórios de Software
As distribuições Linux baseadas no Debian dependem de repositórios (bancos de dados de pacotes de instalação de aplicativos e pacotes de atualização) para manter os sistemas operacionais atualizados e também para buscar e instalar novos pacotes de software com facilidade. A localização desses repositórios é armazenada em /etc/apt/sources.list
, no entanto, fontes adicionais, geralmente exclusivas de aplicativos específicos, podem ser armazenadas no diretório /etc/apt/sources.list.d
.
Quando o comando de atualização do índice de pacotes apt-get update
é executado, o sistema operacional verifica com esses repositórios de pacotes os pacotes disponíveis e registra os softwares disponíveis como disponíveis para o sistema operacional, que você pode instalar usando o tradicional apt-get install <package>
comando.
Um exemplo de uma dessas fontes de software é:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
É importante para essas fontes referenciar versões específicas de distribuições linux. Um exemplo é trusty , que é o codinome do Ubuntu 14.04. Você pode consultar seu sistema operacional (baseado no Debian) para obter detalhes completos com lsb_release -a
ou lsb_release -sc
, o que significa curto e codinome .
Na sua pergunta, a parte $(lsb_release -sc)
é interpretada e o resultado do seu sistema operacional é impresso no arquivo de origem personalizado ros-latest.list que o comando irá criar após a execução.
Interpretador de linguagem de comando
O comando sh
é o shell do bourne . Este é um entre vários shells, mas é considerado o padrão antigo e geralmente existe um que você pode ter certeza. Também é comum ver bash
em muitos scripts de shell. Essa declaração está especificando o shell para usar como shells diferentes usam sintaxe diferente.
No que diz respeito à bandeira -c
, citando man bash
:
If the -c option is present, then commands are read from
string. If there are arguments after the string, they are
assigned to the positional parameters, starting with $0.
Tudo dentro do ''
é lido como uma string, você não precisaria descobrir como escapar de várias aspas ou se preocupar com o shell interpretando algo da maneira errada.
tl; dr
O comando imprime deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
em um arquivo de origem personalizado, substituindo $(lsb_release -sc)
pelo valor interpretado.