ما هي متغيرات البيئة المتاحة أثناء بدء تشغيل البرنامج النصي باستخدام عملية التمهيد init.d؟
سؤال
مشكلتي مثل هذا (OS هو الشمس سولاريس):
في وقت التمهيد ، أريد أن أبدأ عملية باستخدام برنامج نصي محدد. أفعل هذا عن طريق وضع هذا البرنامج النصي في
/etc/init.d
(واتباع قواعد K و S الأخرى).يوجد البرنامج الذي سيطلق عليه البرنامج النصي في
$HOME/xxx/yyy
موقعك.انا استخدم
'su - {myuser} -c "{full path of the program}"'
من أجل تنفيذ البرنامج النصي كـ {myuser}.لا أرغب في ترميز قيمة $ 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
. سيؤدي ذلك إلى طباعة متغيرات البيئة التي سيتم تعيينها في البرنامج النصي للطفل.