मैं गनोम-टर्मिनल के लिए एक कस्टम स्टार्टअप कमांड लिख रहा हूं, और मेरा इरादा इसे लॉन्च करने पर हर बार एक स्वागत संदेश प्रदर्शित करना है।
संदेश सही तरीके से प्रदर्शित होता है, मैंने अक्षरों को 0.09 के समय में एक-एक करके प्रदर्शित करने के लिए इसे कोडित किया:
echo -n "W"
sleep 0.09
echo -n "e"
sleep 0.09
echo -n "l"
sleep 0.09
echo -n "c"
sleep 0.09
echo -n "o"
sleep 0.09
echo -n "m"
sleep 0.09
echo -n "e"
sleep 0.09
इसका परीक्षण करते समय, मुझे लगा कि अक्षरों को प्रदर्शित होने और शुरू करने से रोकने में सक्षम होना काफी आरामदायक होगा su
सीधे। मैं निम्नलिखित समाधान के साथ आया:
su --command "read -n 1 -s key; if [[ "$key" == "g" ]]; then echo "Test Successful."; else echo "Test Failed."; fi;"
मुझे इस्तेमाल करना है su -c
अगर मैं नहीं चाहता कि मैं नाराज हो जाऊं और फेंक दूं illegal action: read -n
। यह कोड स्निपेट विशेष रूप से डीबगिंग उद्देश्यों के लिए है, क्योंकि मैं यह परीक्षण करना चाहता था कि बैश एक-लाइन कमांड संयोजन को कैसे पढ़ता है।
मुख्य समस्या तब आती है जब मैं इस कोड को कॉन्फिग फाइल (जहां मैं स्टार्टअप के लिए अपना कस्टम कमांड लिखता हूं) से निष्पादित करने का प्रयास करता हूं। बैश रिटर्न:
No passwd entry for user 'Successful.; else echo Test'
Welcome
रहस्यमय तरीके से, जब मैं एक ही कमांड (बिना) कोशिश करता हूं su -c
) डिफ़ॉल्ट प्रोफ़ाइल में यह पूरी तरह से काम करता है, लेकिन अगर मैं इसे su -c के साथ आज़माता हूं, तो यह नहीं है।
डिफ़ॉल्ट प्रोफ़ाइल में अन्य आदेशों के साथ, मैंने टाइप किया su -c "echo Hi"
और ठीक काम किया। ऐसा क्यों हो सकता है? क्या तुम्हारे पास कोई विचार है?