Để kiểm tra các hệ thống Debian, bạn có thể kiểm tra xem có /etc/debian_version
tồn tại không:
if [ -f "/etc/debian_version" ]; then
# do stuff
fi
Nó nên được bao gồm Debian và các hệ thống dựa trên nó (bao gồm Ubuntu và các dẫn xuất của nó), mặc dù một số có thể không có nó - trong trường hợp này bạn có thể kiểm tra /etc/*release
các tệp:
if [ "$(grep -Ei 'debian|buntu|mint' /etc/*release)" ]; then
# do stuff
fi
Đâu debian|buntu|mint
là danh sách các tên phân phối cần tìm (không phải là trường hợp nhạy cảm) - bạn có thể biết một số dẫn xuất phổ biến từ đây , mặc dù các dẫn xuất debian như Ubuntu có các dẫn xuất riêng .
Đối với các hệ thống dựa trên RedHat, các công cụ phái sinh sử dụng phạm vi tệp lớn hơn và có thể chưa cài đặt bản phát hành lsb - vì vậy bạn có thể áp dụng các phương pháp sau:
lấy tên phát hành từ
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
Kiểm tra ID DISTRIB trong lsb-release
tệp - một 'Phương pháp dự phòng có thể không cần thiết trên các hệ thống hiện đại', cũng là tệp dường như bị thiếu trên Fedora và không chứa DISTRIB_ID trên OpenSUSE
kiểm tra sự tồn tại của một số thứ sau đây
/etc/fedora-release
và / hoặc /etc/redhat-release
cho RedHat hoặc Fedora
/etc/SuSE-release
cho SuSe
/etc/mandriva-release
cho mandriva / mageia
sử dụng một phương thức tương tự như phương pháp debian sau:
if [ "$(grep -Ei 'fedora|redhat' /etc/*release)" ]; then
...
3 điểm đầu tiên tôi lấy từ cron cập nhật của Google Chrome, vì vậy bạn có thể kiểm tra điều đó để tìm hiểu thêm (nó cũng xác định người quản lý gói)
Đối với phạm vi rộng hơn của HĐH, đọc bài đăng này trên SO sẽ giúp ích.
lsb_release -i 2> /dev/null | sed 's/:\t/:/' | cut -d ':' -f 2-
?? Chỉ cần chạylsb_release -si