क्या मैं एक स्क्रिप्ट का आह्वान करने वाले शेल को एक उपनाम "निर्यात" कर सकता हूं?


14

मैं एक उपयोगिता स्क्रिप्ट लिखने की कोशिश कर रहा हूं जो कुछ उपनामों को परिभाषित करता है।
मेरा शेल है tcsh(इसे बदल नहीं सकते)।

मैंने निम्नलिखित कोशिश की

#!/bin/tcsh  
alias log 'less ~/logs/log.`date '+%Y%m%d'`''

फिर मैं इसे इस तरह से चलाता हूं:

./myscript  
log

मुझे जो आउटपुट मिलता है वह है: log: Command not found.

स्वाभाविक रूप से अगर मैं इसे इस तरह से चलाता हूं:

source myscript  
log

सब कुछ ठीक है।

निर्दिष्ट किए बिना इसे करने का कोई तरीका source ...?


क्या आपने aliasअपनी ~/.cshrcफ़ाइल में रखा है ?
बजे

@qweet - यह मेरा लक्ष्य नहीं है - मैं कुछ गतिशील चाहता था।
रॉन

जवाबों:


18

आप नहीं कर सकते। अपनी स्क्रिप्ट चलाकर आप एक नए शेल को निष्पादित करते हैं। मूल प्रक्रिया द्वारा उपनाम नहीं देखा जाएगा।

एकमात्र तरीका जैसा कि बताया गया है sourceकि वर्तमान शेल आपकी स्क्रिप्ट फ़ाइल (नई प्रक्रिया शुरू किए बिना) को संसाधित करता है।


2
धन्यवाद - यही मैंने सोचा था - मैं अपने आलिया को एक उपनाम जोड़ दूंगा source myscript- जिसे - मैं कुछ आसान चाहता था जिसे सभी टीम के सदस्यों द्वारा साझा किया जा सकता है - एक उपनाम ऐसा करेगा।
RonK
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.