কোনও ফাংশনের নামে %% এর অর্থ কী?


11

এর আউটপুট দেখে env, আমি লক্ষ্য করেছি যে নিম্নলিখিত ফাংশনটিও রয়েছে।

BASH_FUNC_mc%%=() {  . /usr/share/mc/mc-wrapper.sh
}

/Usr/share/mc/mc-wrapper.sh ফাইলের সামগ্রীটি নিম্নলিখিত।

MC_USER=`id | sed 's/[^(]*(//;s/).*//'`
MC_PWD_FILE="${TMPDIR-/tmp}/mc-$MC_USER/mc.pwd.$$"
/usr/bin/mc -P "$MC_PWD_FILE" "$@"

if test -r "$MC_PWD_FILE"; then
        MC_PWD="`cat "$MC_PWD_FILE"`"
        if test -n "$MC_PWD" && test -d "$MC_PWD"; then
                cd "$MC_PWD"
        fi
        unset MC_PWD
fi

rm -f "$MC_PWD_FILE"
unset MC_PWD_FILE

আমাদের কি করতে %%অক্ষর ফাংশন নামে অর্থ কি? তারা কি এটিকে নির্দিষ্ট ক্ষেত্রে ফাংশনটি যুক্ত করে তোলে, না তারা আমাকে অন্য ক্রিয়াকলাপ থেকে আলাদাভাবে কল করার অনুমতি দেয়?

আমি ওপেনসুএস ৪২.৩ ব্যবহার করছি, বাশ সংস্করণ ৪.৩.৪২ (১) -রিলিজ (x86_64-সুস-লিনাক্স-গনু) সহ, যদি এতে কোনও পার্থক্য আসে।

উত্তর:


15

শেলশক দুর্বলতার bashপ্রতিক্রিয়া হিসাবে ফাংশনটির নাম আপডেট করে তৈরি করা হয়েছিল ।

এখানে একটি ফাংশন mcছিল যা রফতানি হয়েছিল এবং আপনার bashসংস্করণটি এটিকে নতুন করে নামকরণ করে প্রিপেন্ডিং BASH_FUNC_এবং প্রতিস্থাপন ()করে %%

$ d() { date ; }
$ export -f d
$ env | grep %%
BASH_FUNC_d%% { date

bash25 ফেব্রুয়ারী 2014 তারিখে এই ফিক্সটি প্রবর্তন করেছে ফ্লোরিয়ান ওয়েইমের প্যাচটি এখানে :

http://seclists.org/oss-sec/2014/q3/att-693/variables-affix.patch

নোট যে একটা ফাংশন নামে প্রায় যে কোন অক্ষর ধারণ করতে পারে bashমাত্র সাধারণ (অর্থাত একটি ফাইলের নাম) একটি কমান্ড নামের মত তাই %%এখানে স্পষ্টভাবে বৈধ।


3

দেখে মনে হচ্ছে যে ফ্যাশনের নামে% অক্ষর ব্যবহার করে বাশ বেশ খুশি:

bash$ TEST%%() { echo test; }
bash$ TEST%%
test

যদিও উদাহরণস্বরূপ ড্যাশ তাদের পছন্দ করে না:

$ TEST%%() { echo test; }
dash: 1: Syntax error: Bad function name

আমি যতদূর বলতে পারি, %% এর ব্যাশ ফাংশন নামে কোনও বিশেষ অর্থ নেই। এটি পরিবর্তে XX ব্যবহারের মতো হবে। এটি nameম্যানপেজে একটি সংজ্ঞা থাকা সত্ত্বেও :

   name   A word consisting only of  alphanumeric  characters  and  under-
          scores,  and beginning with an alphabetic character or an under-
          score.  Also referred to as an identifier.

তবে সেখানেও সমান =চিহ্ন রয়েছে %%! যা সেখানে অ্যাসাইনমেন্টের কারণ হয়।
αғsнιη

2
এটি ঠিক কিভাবে envফাংশন সংজ্ঞা মুদ্রিত।
Wodin
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.