سؤال zsh - التفريق بين source ~ / .shshrc وقشرة البداية في القراءة .zshrc


هل هناك أمر أو متغير بيئة يمكنني اختبار في بلدي ~/.zshrc التي من شأنها أن تفرق بين ما أقوم به source ~/.zshrc لتحديث التكوين الخاص بي وعند قراءة shell ~/.zshrc كما تمت تهيئته؟

حتى الآن حل بلدي هو وضع متغير في نهاية ~/.zshrc واختبر هذا المتغير في الخروج اللاحق ، ولكني أشعر بالفضول إذا كان هناك طريقة أنظف للحصول على هذه المعلومات مباشرة من النظام أو البيئة بدلاً من اختراقها معًا بطريقة تبدو ضعيفة جدًا ....

# somewhere in ~/.zshrc

if [[ -n $CONSOLE_ALREADY_RUNNING ]]; then
    echo "we've alredy loaded ~/.zshrc"
    echo "so you must be sourcing it"
fi

# many more lines of ~/.zshrc commands

# last line of ~/.zshrc
export CONSOLE_ALREADY_RUNNING=1

يبدو أنه يجب أن يكون هناك طريقة أنظف لاختبار ما إذا كنت أقوم بإعادة التحميل فقط source /.zshrc أو إذا .zshrc يتم تنفيذه لمثيل جديد من zsh التي تم تحميلها فقط في الذاكرة.


4
2017-12-05 15:06


الأصل


عبر موقع مكرر: كيف يمكن لاختبار برنامج نصي zsh ما إذا كان مصدره؟ - DavidPostill♦
البحث عن "zsh كيف أعرف ما إذا كان قد تم الحصول على النصي" قد أعطاك الإجابة كالرابط الثاني. - DavidPostill♦
DavidPostill ، شكرًا لك على مساعدتك. لقد بحثت عن كل شيء يمكن أن أفكر به ، لكني ظللت أفكر "التفريق ..." المراجع التي وجدتها كانت فقط على غرار: الفرق بين المصدر و. وركزت جميع حول باش على الرغم من أنني كنت تبحث عن zsh ... على أي حال ، لقد وجدت أنت و Timotree الجواب. شكرا جزيلا لكل واحد منكم! - Ryan Erwin


الأجوبة:


$ZSH_EVAL_CONTEXT هو "toplevel" إذا كنت استدعاء البرنامج النصي من قذيفة. (فمثلا ./script) $ZSH_EVAL_CONTEXT هو "toplevel:file" إذا كنت مصدر البرنامج النصي. (فمثلا source script) $ZSH_EVAL_CONTEXT هو "file" إذا تم تشغيله تلقائيًا كتهيئة وقت التشغيل. (مثل ~/.zshrc سيكون.)

وجدت المتغير هنا.


4
2017-12-05 17:06



رائع. شكرا لك @ تيموتري. اعتقدت أنه يجب أن يكون هناك طريقة مناسبة للقيام بذلك .... ZSH_EVAL_CONTEXT هو بالضبط ما كنت أبحث عنه ، ولكن لا أعرف الاسم كان لدي وقت عصيب حقا العثور عليه! أول مشاركة على الإطلاق لـ Stackuser ... شكرًا جزيلاً لمساعدتكم! - Ryan Erwin
Ryan سروري! يذهب الائتمان أيضا إلى DavidPostill لمساعدتي في العثور عليه. - timotree