ما هي متغيرات البيئة المتاحة أثناء بدء تشغيل البرنامج النصي باستخدام عملية التمهيد init.d؟

StackOverflow https://stackoverflow.com/questions/2598815

  •  25-09-2019
  •  | 
  •  

سؤال

مشكلتي مثل هذا (OS هو الشمس سولاريس):

  1. في وقت التمهيد ، أريد أن أبدأ عملية باستخدام برنامج نصي محدد. أفعل هذا عن طريق وضع هذا البرنامج النصي في /etc/init.d (واتباع قواعد K و S الأخرى).

  2. يوجد البرنامج الذي سيطلق عليه البرنامج النصي في $HOME/xxx/yyy موقعك.

  3. انا استخدم 'su - {myuser} -c "{full path of the program}"' من أجل تنفيذ البرنامج النصي كـ {myuser}.

  4. لا أرغب في ترميز قيمة $ home في البرنامج النصي ، لكنني أريد استخدام $HOME متغير البيئة فقط. كيف يمكنني الحصول على هذا $HOME متغير البيئة في البرنامج النصي shell؟ أيضا ما هي المتغيرات الأخرى المتاحة لي؟

هل كانت مفيدة؟

المحلول

للحصول على متغير المنزل لأي مستخدم ، جرب هذا الاختراق:

HOME=`sudo -u myuser -s "cd ~; pwd"`

نصائح أخرى

فقط ضع

env > env.txt

في السيناريو. بعد تشغيل البرنامج النصي ، يحتوي ملف Env.TXT على جميع متغيرات البيئة.

2) ما هو منزل المستخدم؟ منزل الجذر $ أو منزل myuser $

إذا كان منزل Myuser ، فما عليك سوى استخدام $ Home في البرنامج النصي للأطفال ، ولا تستخدمه في البرنامج النصي init.d. سيتم تعيين هذا لك من خلال عملية shell التي تبدأ. عندما تفعل su - {myuser} أنت تقوم بتوجيه SU إلى تشغيل قذيفة تسجيل الدخول الخاصة بـ Myuser (كما هو محدد في /etc /passwd). ستقوم قذيفة تسجيل الدخول بتعيين متغيرات البيئة الافتراضية بناءً على ماهية الصدفة. انظر وثائق Shell الخاصة بك للحصول على التفاصيل. على سولاريس ، ربما يكون هذا KSH أو Bourne Shell.

3) افعل su - myuser -c /usr/bin/env. سيؤدي ذلك إلى طباعة متغيرات البيئة التي سيتم تعيينها في البرنامج النصي للطفل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top