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 facilmente novos pacotes de software. A localização desses repositórios é armazenada /etc/apt/sources.list
, no entanto, fontes adicionais, geralmente exclusivas para aplicativos específicos, podem ser armazenadas no /etc/apt/sources.list.d
diretório
Quando o comando package index update apt-get update
é executado, seu sistema operacional verifica com esses repositórios de pacotes os pacotes disponíveis e registra os softwares disponíveis como disponíveis no sistema operacional, que você pode instalar usando o apt-get install <package>
comando tradicional .
Um exemplo de uma dessas fontes de software é:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
É importante que essas fontes façam referência a versões específicas de distribuições linux. Um exemplo confiável é o codinome do Ubuntu 14.04. Você pode consultar seu sistema operacional (baseado em debian) para obter detalhes completos com lsb_release -a
ou o lsb_release -sc
que significa abreviado e codinome .
Na sua pergunta, a peça $(lsb_release -sc)
é interpretada e o resultado do seu sistema operacional é impresso no arquivo de origem personalizado ros-latest.list, que o comando criará na execução.
Intérprete de linguagem de comando
O sh
comando é o shell bourne . Essa é uma, dentre várias conchas, mas é considerada o padrão antigo e, geralmente, uma que você pode ter certeza de que existe. Também é comum ver bash
em muitos scripts de shell. Essa declaração está especificando o shell a ser usado, pois diferentes shells usam sintaxe diferente.
No que diz respeito à -c
bandeira, citando man bash
:
Se a opção -c estiver presente, os comandos serão lidos da sequência. Se houver argumentos após a sequência, eles serão atribuídos aos parâmetros posicionais, começando com $ 0.
Tudo dentro do ''
é lido como uma string, você não precisa 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.