उपनाम बनाम साधारण कमांड के लिए निर्यात


33

जैसे साधारण आदेशों के लिए less, एक उपनाम बनाना या विकल्पों को निर्यात करना बेहतर है? क्या एक के ऊपर एक कोई लाभ है?

उदाहरण के लिए, अगर मैं lessहमेशा -Rकच्चे पात्रों को दिखाने के लिए विकल्प का उपयोग करना चाहता हूं, तो ये दोनों समाधान काम करते हैं:

  1. export LESS='-R'
  2. alias less='less -R'

इस तरह के एक साधारण मामले के लिए, एक के ऊपर एक लाभ है? किसी भी परिदृश्य जहां एक समस्या का कारण होगा और दूसरा नहीं होगा?

मैंने कई infoऔर manपृष्ठों के माध्यम से पढ़ा है , साथ ही साथ इसे Googling भी किया है, लेकिन मैं अभी भी इस पर अटका हुआ हूं।


1
नहीं, यह वास्तव में व्यक्तिगत प्राथमिकता के लिए आता है। मैंने इसे बंद करने के लिए मतदान किया क्योंकि यह अधिक राय आधारित लगता है।
SLM

तीन और समाधान: एक शेल फ़ंक्शन बनाएं (केवल शेल में काम करता है लेकिन इंटरेक्टिव होने की आवश्यकता नहीं है); ~ / बिन या कहीं भी एक स्क्रिप्ट बनाएं (शेल स्टार्टअप ओवरहेड है, लेकिन रनिंग गोले और अन्य कार्यक्रमों से तुरंत काम करता है, और लगातार है); कार्यक्रम-विशिष्ट कॉन्फिग फाइल ( lessआप इसका उपयोग करके कर सकते हैं lesskey)
डेल्टैब

3
@ एसएलएम यह राय आधारित नहीं है, या कम से कम इसका मतलब नहीं था। किसी को बहुत अधिक ओवरहेड की आवश्यकता हो सकती है, और अनावश्यक रूप से संसाधनों का उपयोग कर सकते हैं, विशेष रूप से अधिक जटिल परिदृश्य में। एक * निक्स दुनिया में पारंपरिक रूप से अधिक सही हो सकता है, या शायद कहीं भी एक औपचारिक मानक है। प्रोग्रामर हर समय "मैला कोडिंग" पर नाराज हो जाते हैं, तब भी जब सभी इरादों और उद्देश्यों के लिए यह एक ही लक्ष्य प्राप्त करता है।
16'14

जवाबों:


30

दोनों में एक अंतर यह है कि उपनाम केवल एक शेल विशेषता है। पर्यावरण चर सभी उपप्रजातियों द्वारा विरासत में मिले हैं (जब तक कि जानबूझकर मंजूरी नहीं दी गई है)।

वातावरण चर भले ही काम करने के लिए और अधिक संभावना होगी lessइस तरह के एक अन्य सुरक्षा (जैसे के माध्यम से के रूप में परोक्ष रूप से शुरू की है, tcsh), man, vim, psql, आदि


3
विशेष रूप से, उपनाम केवल इंटरैक्टिव गोले में काम करते हैं: आप उन्हें शेल स्क्रिप्ट में उपयोग नहीं कर सकते हैं, जो आप कभी-कभी चाहते हैं। bash -c 'alias ll="ls -l"; ll'उपनाम का उपयोग नहीं करेगा।
डेल्टैब

आह, मुझे नहीं पता था कि! तो अगर मैं export LESS='-R'अपने .zshrc में हूं, तो एक zsh सेशन खोलें, और फिर उसी सत्र में bash पर स्विच करें (.bashrc में कोई निर्यात नहीं), फिर भी पर्यावरण चर सेट किया जाएगा? मैंने सोचा होगा कि दोनों खो जाएंगे ....
स्काइलीज

@ डैल्टैब आह, हां, मुझे उस भेद के बारे में पता है, धन्यवाद है ग्रीप के रंग के मुद्दों के लिए। यह इंगित करने के लिए धन्यवाद।
स्केच

1

यह उस उपकरण पर बहुत निर्भर करता है जिसका आप उपयोग कर रहे हैं। ऐसे उपकरण होंगे जो आपको या तो दूसरों का उपयोग करने की अनुमति देते हैं, जो केवल एक की अनुमति देता है।

ऐसी कमांड्स हैं जो दूसरों द्वारा कॉल की जाती हैं और पर्यावरण चर को पढ़ते हैं और समान स्विच को स्वीकार करते हैं, लेकिन हर एक को एक ही स्विच में जोड़ना एक परेशानी है, जैसे कि कंपाइलर make, यहां पर्यावरण चर चमकते हैं। आप चर सेट करते हैं और इसके बारे में भूल जाते हैं। यह भी एक प्लस है कि यह अस्थायी हो सकता है और एकल कमांड के लिए काम कर सकता है।

निचला रेखा, वरीयताओं का एक मेटर है और कार्य के लिए सबसे अच्छी कार्रवाई है, ऐसे समय होंगे जहां एक उपनाम स्थापित करना पर्यावरण चर की तुलना में आसान और स्थायी है और अन्य बार जहां आपको उसी तरह का व्यवहार करने वाले उपकरणों की एक सरणी की आवश्यकता होती है जहां आप होंगे पर्यावरण चर प्यार करता हूँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.