パッケージ管理とソフトウェアリポジトリ
DebianベースのLinuxディストリビューションは、リポジトリ(アプリケーションインストールパッケージとアップグレードパッケージのデータベース)に依存してオペレーティングシステムを最新の状態に保ち、新しいソフトウェアパッケージを簡単に取得してインストールします。これらのリポジトリの場所はに保存されますが/etc/apt/sources.list
、通常は特定のアプリケーションに固有の追加ソースをに保存できます/etc/apt/sources.list.d
ディレクトリに。
パッケージインデックス更新コマンドapt-get update
が実行されると、オペレーティングシステムはこれらのパッケージリポジトリで利用可能なパッケージを確認し、利用可能なソフトウェアをオペレーティングシステムに利用可能なものとして登録しますapt-get install <package>
。
これらのソフトウェアソースの1つの例は次のとおりです。
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
これらのソースは、Linuxディストリビューションの特定のバージョンを参照することが重要です。例は、Ubuntu 14.04のコードネームであるtrustyです。あなたはとの完全な詳細については、お使いのOS(のdebianベース)を照会することができるlsb_release -a
かlsb_release -sc
を意味している短いとコードネーム。
質問では、パーツ$(lsb_release -sc)
が解釈され、オペレーティングシステムからの結果がカスタムソースファイルros-latest.listに出力され、コマンドが実行時に作成されます。
コマンド言語インタープリター
sh
コマンドはBourneシェル。これは、いくつかのシェルのうちの1つですが、古い標準と見なされており、一般に存在することを確認できます。またbash
、多くのシェルスクリプトでよく見られます。その宣言は、異なるシェルが異なる構文を使用するため、使用するシェルを指定しています。
-c
フラグに関しては、引用してman bash
ください:
-cオプションが存在する場合、コマンドはstringから読み取られます。文字列の後に引数がある場合は、$ 0から始まる位置パラメータに割り当てられます。
内のすべて''
が文字列として読み取られるため、さまざまな引用符をエスケープする方法を理解したり、シェルが何かを間違った方法で解釈することを心配する必要はありません。
tl; dr
コマンドは、解釈された値にdeb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
置き換え$(lsb_release -sc)
て、カスタムソースファイルに出力します。