.bashrc अलग फ़ाइल से उपनाम लोड कर रहा है


11

मेरे पास एक .bashrc फ़ाइल है, जिसे मैं सेटअप करना चाहता हूं इसलिए यह एक .aliases फ़ाइल से उपनाम पढ़ता है और उन्हें सेट करता है।

वर्तमान में मेरे पास है:

# User specific aliases and functions
while read alias_line
do
        echo `alias ${alias_line}`
done < .aliases

लेकिन लॉगिन होने पर मुझे:

-बैश: उपनाम: -फू: नहीं मिला -बश: उपनाम: $ USER ": नहीं मिला

-बाश: उपनाम: -लार्ट ”: नहीं मिला

.Aliases फ़ाइल इस प्रकार है:

psu = "ps -fu $ USER" ll = "ls -lart"
पिको = 'नैनो'

जवाबों:


13

जब आप उपयोग करते हैं alias ${alias_line}, तो चर को नियमों को अनदेखा करते हुए रिक्त स्थान पर तोड़ दिया जाता है।

इसे ठीक करने के दो तरीके हैं:

  • उपनाम फ़ाइल से सभी उद्धरण निकालें:

    ll=ls -lart
    psu=ps -fu $USER

    और चर को उद्धरणों में रखें:

    alias "$alias_line"

    यह काम करता है क्योंकि बैश में है, ll="ls -lart"और "ll=ls -lart"बिल्कुल बराबर है।

  • वैकल्पिक रूप से (यह एक बेहतर और अधिक सामान्य तरीका है), aliasकमांड के साथ एक फ़ाइल है , और इसे आयात करने के लिए .बिलिन (उर्फ source) का उपयोग करें ।

    alias pico='nano'
    alias psu='ps x'
    alias ll='ls -lart'

    तो आपके में ~/.bashrc:

    . ~/.aliases

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


ये सही है। यह पूरी तरह से गलत दृष्टिकोण था। मैंने इन कमांडों का उपयोग करते हुए इसे स्वयं किया: पढ़ी गई पंक्ति के दौरान; गूंज "उपनाम $ लाइन" >> .aliases_full; किया <.आलीसैड I तो बस mv .aliases_full_aliases किया। ./.aliases #in .bashrc वैसे भी धन्यवाद :)
व्लादिमीर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.