यह भी ध्यान देने योग्य है कि कुछ (कई?) प्रोग्राम किसी उपयोगकर्ता द्वारा चलाए जाने पर अलग-अलग व्यवहार करते हैं (यानी, कमांड लाइन पर) एक बैच प्रक्रिया का हिस्सा बनकर/किसी अन्य प्रक्रिया से चलते हैं। वास्तविक अंतर यह है कि प्रक्रिया से जुड़ा टर्मिनल है या नहीं।
टीसीएल के एक्सपैक्ट एक्सटेंशन का हिस्सा स्पॉन कमांड चीजों को सेट करता है, इसलिए निष्पादित प्रोग्राम स्वयं को उपयोगकर्ता द्वारा चलाए जाने के रूप में देखता है, और फिर कार्यक्षमता को जोड़ता है ताकि टीसीएल प्रोग्राम बाहरी कार्यक्रम के साथ सुविधाजनक तरीके से बातचीत कर सके। (यानी, नियमित रूप से अभिव्यक्तियों और उन मैचों से शाखा के माध्यम से इसके आउटपुट से मिलान करना)। स्पॉन के माध्यम से चलने वाली चीजें असीमित रूप से चलती हैं।
निष्पादन आदेश एक कोर टीसीएल कमांड है जो दूसरे प्रोग्राम को चलाता है, जो इसके आउटपुट को वापस कर देता है। यह किसी भी जटिल सेटअप को नहीं करता है जो स्पॉन करता है, लेकिन केवल एक प्रोग्राम चलाने और इसे आउटपुट (और यह रिटर्न कोड) देखने के लिए बहुत आसान हो सकता है। निष्पादन द्वारा चलाए गए चीजें डिफ़ॉल्ट रूप से, सिंक्रनाइज़ेशन से चलती हैं, लेकिन कमांड के अंत में एक एम्पर्सेंड इसे पृष्ठभूमि में चलाने के लिए कारण बनाता है (पारंपरिक शैल स्क्रिप्टिंग की तरह)।
ओपन कमांड, आमतौर पर फ़ाइलों को पढ़ने/लिखने के लिए उपयोग किया जाता है, बाहरी प्रक्रियाओं को चलाने के लिए भी इस्तेमाल किया जा सकता है। पाइप (|) प्रतीक के साथ कमांड नाम से पहले, आप इसे बाहरी प्रक्रिया चलाने के लिए कहते हैं, और परिणामी प्रक्रिया के साथ बातचीत करने के लिए पढ़ने/लिखने के लिए फ़ाइल डिस्क्रिप्टर तक पहुंच प्राप्त करते हैं। यह उपलब्ध प्रक्रिया के साथ अधिक बातचीत के साथ, निष्पादन और स्पॉन के बीच एक मध्य ग्राउंड की तरह है, लेकिन जटिल पर्यावरणीय सेटअप के बिना जो स्पॉन करता है। यह प्रोग्राम के साथ बातचीत करने के लिए बेहद आसान हो सकता है जिसके लिए इनपुट की आवश्यकता होती है लेकिन स्वचालन के लिए अभी भी काफी अच्छी तरह से सेटअप है।
ऐसे कार्यक्रम का एक उदाहरण विडंबनापूर्ण रूप से tclsh है। –