बैश शेल के साथ, आप सिंथेटिक DEBUGसिग्नल पर एक जाल स्थापित कर सकते हैं । यह उपयोगी है और प्रत्येक शेल कमांड पर आपके फ़ंक्शन या बिट कोड को निष्पादित करेगा। उदाहरण के लिए:
$ trap 'logger -t shell "${BASH_COMMAND}"' DEBUG
उदाहरण के लिए, किसी फ़ाइल में जाल को स्थापित करने का विचार है, उदाहरण के लिए, /etc/profile.d/bash-loggerऔर किसी भी उपयोगकर्ता शेल सत्र कमांड को स्वचालित रूप से लॉग इन करना है जब भी वे ऐसा करते हैं। दूरस्थ कमांड को आसानी से ट्रेस करने के लिए भी यह उपयोगी है ।
डैश शेल स्रोत कोड को देखकर, मुझे लगता है कि ऐसा कोई DEBUGसंकेत उपलब्ध नहीं है।
क्या डैश शेल के साथ समान परिणाम प्राप्त करने के लिए कोई वर्कअराउंड या विकल्प हैं?
@ हस्तूर मुझे लगता है कि आपका मतलब है
—
स्टीवन पेनी
eval "$line"
@StevenPenny हाँ, मैं लिख रहा था
—
Hastur
eval <command>और मैं गलत भाग को रद्द करता हूँ, ऐसा होता है ... निश्चित रूप से हमेशा अगर आप अपनी स्क्रिप्ट को उपनाम / फ़ंक्शन वाले के बजाय डिस्क पर कमांड का उपयोग करने के लिए मजबूर नहीं करना चाहते ...◉‿◉
क्षमा करें, लेकिन यह बहुत मदद नहीं कर रहा है। उदाहरण के लिए, इसमें फंसी हुई फ़ाइल में जाल को स्थापित करना है,
—
कॉस्मो
/etc/profile.d/bash-loggerऔर किसी भी उपयोगकर्ता शेल सत्र कमांड को स्वचालित रूप से लॉग इन करना है।
यह वास्तव में इस प्रश्न के लिए सही साइट नहीं है। अगर यह काम नहीं करता है, तो मैं और अधिक इनाम जोड़ रहा हूँ। आप इसे हटाने और unix.stackexchange.com
—
स्टीवन पेनी
while read -r line; do logger -t shell "$line"; command "$line"; done < myscript.sh? यदि यह काम करता है तो मैं एक उत्तर में कुछ लाइन जोड़ सकता हूं।