উত্তর:
আপনি বা ( সমতুল্য ) fব্যবহার করে কেবল পঠনযোগ্য ফাংশন হিসাবে ঘোষণা করতে পারেন । এটি এই বিল্ট-ইন ইউটিলিটিগুলির বিকল্প যা এগুলি পরিবর্তকের পরিবর্তে কোনও ফাংশনের নাম হিসাবে কাজ করে ।readonly -f fdeclare -g -r -f freadonlydeclare -g -r-fff
$ f(){ echo Hello; }
$ readonly -f f
$ f(){ echo Bye; }
bash: f: readonly function
$ unset -f f
bash: unset: f: cannot unset: readonly function
$ f
Hello
যেমন আপনি দেখতে পাচ্ছেন, ফাংশনটি কেবল পঠনযোগ্য করে তোলে তা কেবল এটি ওভাররাইড হওয়া থেকে রক্ষা করে না, তবে এটি সেট না করা থেকে রক্ষা করে (সম্পূর্ণরূপে অপসারণ)।
বর্তমানে (যেমন হিসাবে bash-5.0.11), কেবলমাত্র পঠনযোগ্য ফাংশনটি সংশোধন করার চেষ্টা করা যদি কেউ errexitশেল বিকল্প ( set -e) ব্যবহার করে তবে শেলটি শেষ হবে না । bashরক্ষণাবেক্ষণকারী, চেট বলছেন যে এটি একটি তদারকি এবং পরবর্তী প্রকাশের সাথে এটি পরিবর্তন করা হবে।
bash: f: readonly functionএবং শূন্য-নয় এমন স্থিতি কোড উত্পন্ন করে , তবে errexitবিকল্পটি সক্ষম করা থাকলে প্রস্থান করবেন না ।
bash, তবে আমি bashনিশ্চিত হতে মেইলিং তালিকার একটিতে জিজ্ঞাসা করব।
bashশুধুমাত্র প্রস্থানের যখন set -eকার্যকর হয় যখন POSIX প্রয়োজন তা (এবং readonly -fPOSIX নয়)। গ্রেগ উল্লেখ করেছেন যে bashম্যানুয়ালটিতে কখনই "ফাংশন ঘোষণায় ব্যর্থতা" উল্লেখ করা হয়নি কারণ errexitপ্রস্থানটি ট্রিগার করার কারণ হিসাবে (যদি না কোনও ফাংশন ঘোষণাকে যৌগিক কমান্ড হিসাবে গণনা করা হয়, যা তিনি নিশ্চিত না যে এটি তা করেন না)। থ্রেডটি এখানে চলছে: list.gnu.org/archive/html/help-bash/2019-09/msg00039.html
errexitবা set -eআপনার প্রশ্নে কিছু বলেন না ।
typeset -r:typeset -rf f।