Quản lý gói và kho phần mềm
Các bản phân phối Linux dựa trên Debian dựa trên các kho lưu trữ (cơ sở dữ liệu của các gói cài đặt ứng dụng và gói nâng cấp) để giữ cho các hệ điều hành được cập nhật và cũng để dễ dàng tìm nạp và cài đặt các gói phần mềm mới. Vị trí của các kho lưu trữ này được lưu trữ trong /etc/apt/sources.list
, tuy nhiên các nguồn bổ sung, thường là duy nhất cho các ứng dụng cụ thể có thể được lưu trữ trong /etc/apt/sources.list.d
thư mục.
Khi lệnh cập nhật chỉ mục gói apt-get update
được thực thi, hệ điều hành của bạn sẽ kiểm tra các kho lưu trữ gói này để biết các gói có sẵn và đăng ký các phần mềm có sẵn cho hệ điều hành mà bạn có thể tiếp tục cài đặt bằng apt-get install <package>
lệnh truyền thống .
Một ví dụ về một trong những nguồn phần mềm này là:
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ trusty main restricted
Điều quan trọng là các nguồn này phải tham chiếu các phiên bản phân phối linux cụ thể. Một ví dụ đáng tin cậy là tên mã cho Ubuntu 14.04. Bạn có thể truy vấn hệ điều hành của mình (dựa trên debian) để biết chi tiết đầy đủ với lsb_release -a
hoặc lsb_release -sc
có nghĩa là tên ngắn và tên mã .
Trong câu hỏi của bạn, phần $(lsb_release -sc)
được diễn giải và kết quả từ hệ điều hành của bạn được in vào tệp nguồn tùy chỉnh ros-muộn.list mà lệnh sẽ tạo khi thực thi.
Thông dịch viên ngôn ngữ lệnh
Các sh
lệnh là vỏ bourne . Đây là một, trong số nhiều vỏ nhưng được coi là tiêu chuẩn cũ và nói chung là bạn có thể tồn tại. Nó cũng thường thấy bash
trong nhiều kịch bản shell. Tuyên bố đó đang chỉ định shell để sử dụng vì các shell khác nhau sử dụng cú pháp khác nhau.
Liên quan đến -c
cờ, trích dẫn man bash
:
Nếu tùy chọn -c có mặt, thì các lệnh được đọc từ chuỗi. Nếu có các đối số sau chuỗi, chúng được gán cho các tham số vị trí, bắt đầu bằng $ 0.
Tất cả mọi thứ trong chuỗi ''
được đọc dưới dạng một chuỗi, bạn sẽ không cần phải tìm ra cách thoát các dấu ngoặc kép khác nhau hoặc lo lắng về trình bao diễn giải sai cách nào đó.
tl; dr
Lệnh in deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main
ra một tệp nguồn tùy chỉnh, thay thế $(lsb_release -sc)
bằng giá trị được giải thích.