আমি একটি সরল বাশ স্ক্রিপ্ট নিয়ে কাজ করছি যা উবুন্টু এবং সেন্টোস বিতরণে চলতে সক্ষম হওয়া উচিত (দেবিয়ান এবং ফেডোরা / আরএইচএল সমর্থন একটি প্লাস হতে পারে) এবং আমার স্ক্রিপ্টটি যে বিতরণে চলছে তার নাম এবং সংস্করণ জানতে হবে ( নির্দিষ্ট ক্রিয়াকলাপ ট্রিগার করার জন্য, উদাহরণস্বরূপ সংগ্রহস্থল তৈরি)। এখন পর্যন্ত আমি যা পেয়েছি তা হ'ল:
OS=$(awk '/DISTRIB_ID=/' /etc/*-release | sed 's/DISTRIB_ID=//' | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VERSION=$(awk '/DISTRIB_RELEASE=/' /etc/*-release | sed 's/DISTRIB_RELEASE=//' | sed 's/[.]0/./')
if [ -z "$OS" ]; then
OS=$(awk '{print $1}' /etc/*-release | tr '[:upper:]' '[:lower:]')
fi
if [ -z "$VERSION" ]; then
VERSION=$(awk '{print $3}' /etc/*-release)
fi
echo $OS
echo $ARCH
echo $VERSION
এটি রিলিজের নাম হিসাবে কাজ করে, ফিরে আসছে বা (আমি অন্যদের চেষ্টা করিনি) বলে মনে হচ্ছে । যাইহোক, আমার একটি অনুভূতি আছে যে এটি খুঁজে পাওয়ার আরও সহজ এবং নির্ভরযোগ্য উপায় থাকতে হবে - এটি কি সত্য?ubuntu
centos
এটি রেডহ্যাটের পক্ষে কাজ করে না। / ইত্যাদি / redhat- রিলিজ অন্তর্ভুক্ত: Redhat লিনাক্স এন্টারপ্রাইজ রিলিজ 5.5
সুতরাং, সংস্করণটি তৃতীয় শব্দ নয়, আপনি আরও ভাল ব্যবহার করতে চাইবেন:
OS_MAJOR_VERSION=`sed -rn 's/.*([0-9])\.[0-9].*/\1/p' /etc/redhat-release`
OS_MINOR_VERSION=`sed -rn 's/.*[0-9].([0-9]).*/\1/p' /etc/redhat-release`
echo "RedHat/CentOS $OS_MAJOR_VERSION.$OS_MINOR_VERSION"
*
সঙ্গে +
মন্তব্য formating এড়াতে, এটি হওয়া উচিত etc/*-release
, এটা কাজ বলে মনে হয়।
uname -rv | grep -i "name_of_distro"
এবং প্রস্থান কোড ব্যবহার করবেন না?
+-release
কাজ করছেন? কার্যকরভাবে আপনি ধরে নিচ্ছেন এটি ধরে নিচ্ছেন/etc/lsb-release
, তাই সম্ভবত এটি কল করুন।