আপনার প্রশ্নের উত্তর দেওয়ার জন্য, সবচেয়ে সঠিকভাবে, sudo
কোনওটি সর্বজনীন হিসাবে বিবেচিত হয় না। সত্যিকার অর্থে 'সর্বজনীন' এর সম্পূর্ণ ধারণাটি প্রায়শই একটি লাল রঙের হেরিং। ক্রস-ডিস্ট্রো সামঞ্জস্যতা সম্পর্কিত এটি বিশেষত সত্য। একবারে বিভিন্ন সফ্টওয়্যার সংস্করণে আপনার সংখ্যা ছড়িয়ে পড়লে সর্বজনীনতা অর্ধ-অবাস্তব হয়ে যায়। প্রকৃতির দ্বারা স্ক্রিপ্টিং বাস্তবসম্মত, যদি এটি পেডেন্টিক হয়, পোর্টেবল স্ক্রিপ্টগুলি লেখার পক্ষে ব্যবহারিকভাবে অসম্ভব হত।
সাধারণত আমি আমার উদ্দিষ্ট নির্বাহকারী পরিবেশ, একটি আধা-আধুনিক লিনাক্স বিতরণ, আমি সাধারণ জিএনইউ ইউটিলস সহ একটি পসিক্স শেল আশা করি g লিনাক্সের বাইরে চলতে পারে এমন স্ক্রিপ্টগুলির জন্য, আমি কেবল সম্পূর্ণ পসিক্স স্ট্যান্ডার্ড আশা করি। স্পষ্টতই অনেকগুলি স্ক্রিপ্টগুলি লিনাক্সের সাথে সুনির্দিষ্ট, বা ডিস্ট্রোতে নির্দিষ্ট, যাতে প্রায়শই বহনযোগ্যতার সুযোগকে সঙ্কুচিত করা হয়।
আপনার নির্দিষ্ট স্ক্রিপ্টিং কেসটি সম্বোধন করতে,
#!/bin/sh
## Exit Point
die() {
[ -n "$2" ] && echo "$2"
exit $1
}
## Require SuperUser Execution, Otherwise Re-Execute
[ `id -u` -ne 0 ] && {
command -v lsb_release > /dev/null && {
DISTRO="`lsb_release -is`"
[ "$DISTRO" = "Ubuntu" ] && SUPERUSER='sudo'
}
SUPERUSER="${SUPERUSER:-su}"
case "$SUPERUSER" in
su)
su -c "$0"
;;
sudo)
sudo "$0"
;;
esac
}
## Require SuperUser Execution
[ `id -u` -ne 0 ] && die 78
echo 'Script Executed by UID'
id -u
## Clean Up
die 0
আটকানো স্ক্রিপ্টটি পসিক্স শেল প্রশংসা, আমি সবসময় ড্যাশ সামঞ্জস্যপূর্ণ লিখি।
sudo
বেশিরভাগ ডিস্ট্রোজে বান্ডিল হয়ে থাকতে পারে তবে এগুলি সমস্তই চালক হিসাবে সক্ষম হিসাবে ব্যবহারকারীকে কনফিগার করে না।