क्यों .bashrc फ़ाइल में परिभाषित अन्य नाम काम नहीं कर रहे हैं?


12

मैंने नीचे .bashrc फ़ाइल में अन्य नाम दिए हैं। लेकिन अन्य नाम काम नहीं कर रहे हैं। क्यों?

alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.

2
क्या आप कह रहे हैं कि आपको एनवायरनमेंट वैरिएबल मिलेंगे लेकिन एलियसेस नहीं या आपको इसमें से कुछ नहीं मिलेगा?
पॉल

1
एक अलग मुद्दा हो सकता है, लेकिन आप अपने पेट को मिटा देंगे। आपको किसी भी सेटिंग में अपने पुराने पैट का संदर्भ लेना चाहिए, जैसेexport PATH=$PATH:$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
अमीर होमोलका

जवाबों:


29

क्या आपने अपनी .bashrcफ़ाइल को बदलने के बाद उसे स्रोत बनाया है? प्रयत्न:

. ~/.bashrc

फिर आपके शेल को परिवर्तनों को देखना चाहिए। वैकल्पिक रूप से, आप अपना शेल समाप्त कर सकते हैं और पुनः आरंभ कर सकते हैं।

ps

जब आप किसी स्क्रिप्ट से चलते हैं, तो इस पहले रेफ को लोड करें

shopt -s expand_aliases

2
इससे मेरी समस्या हल हो गई! इससे पहले, मैंने SSH के माध्यम से और फिर से लॉग आउट करने की कोशिश की, लेकिन कुछ नहीं हुआ। उपनाम अभी भी उपलब्ध नहीं था। ऐसा लगता है कि मुझे हर बार एसएसएच करना पड़ता है! क्या आप जानते हैं कि ऐसा क्यों हो रहा है?
व्लादिमीर डेस्पोटोविक

मैं फिर से चलने की सलाह नहीं देता .bashrc। यह कुछ डुप्लिकेट और सूजन मूल्यों का कारण बन सकता है। क्यों नहीं बाहर निकलें और एक नया शेल शुरू करें? यह अद्यतन की गई .bashrcफ़ाइल को लोड करेगा ।
एलिकएल्ज़िन-किलाका

2

ऐसा इसलिए हो सकता है क्योंकि आपके PATH को सभी उपनामों वाले बायनेरिज़ फोल्लोवे पथ का उपयोग करने के लिए सही तरीके से सेट नहीं किया गया है। यानी ls / bin / ls के अंतर्गत मौजूद है।

क्या आप "निर्यात पाथ = $ पाथ: $ ORACLE_HOME / bin: / usr / vac / bin: / usr / vacpp / bin:" का उपयोग करके एक कोशिश दे सकते हैं। या किसी चीज़ की तरह "निर्यात पथ = $ ORACLE_HOME / बिन: / usr / vac / bin: / usr / vacpp / bin: / bin: / sbin /: / usr / sbin

यदि नहीं, तो अलग-अलग उर्फ ​​रेफरी बायनेरिज़ (जो इतिहास) के लिए पथ निर्देशिका खोजने के लिए "जो" का उपयोग करें।


1

अपने आप से पूछने के लिए प्रश्न हैं:

  • क्या ~ / .bashrc आपके शेल में पहले से ही निष्पादित है। यह केवल तब चलता है जब शेल शुरू किया जाता है। यदि आप एक नया शेल खोलते हैं (निष्पादित करें bash) यह होना चाहिए। aliasआप के साथ अपने सभी उपनाम मुद्रित देखना चाहिए।
  • दूसरी बात पूछने के लिए: आपके उपनामों में कार्यक्रम उपलब्ध हैं। कम से कम एच (उर्फ इतिहास) को निश्चित रूप से काम करना चाहिए, क्योंकि यह बिलिन है।

1

हो सकता है कि आप अपने उपनामों को अपने में परिभाषित करने की कोशिश कर रहे हों .bashrcजो पहले से ही वैश्विक हैं।

आमतौर पर आपके उपनाम .bashrcको /etc/bashrcकॉल से पहले परिभाषित किया जाता है । उन्हें परिभाषित करने की कोशिश करो के बाद

यहाँ आपका एक उदाहरण है .bashrc:

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias c='clear'
alias l='ls -lt'
alias h='history'
alias d='ls -lt |grep "^d"'

export ORACLE_HOME=/ora11gr2/app/oracle/product/11.2.0/db2
export ORACLE_LIB=/ora11gr2/app/oracle/product/11.2.0/db2/lib
export PATH=$ORACLE_HOME/bin:/usr/vac/bin:/usr/vacpp/bin:.    
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:.

बहुत बढ़िया जवाब! मैं इसे लगातार एडब्ल्यूएस लिनक्स एएमआई
रेनबा

1

यदि कोई MacOS उपयोगकर्ता इस उत्तर की तलाश में आता है, तो मैंने अपने मैकबुक पर यह कोशिश की और यहां तक ​​कि टर्मिनल को फिर से शुरू करने से नई उपनामों की परिभाषाएँ लोड नहीं होंगी। मुझे काम करने का एकमात्र तरीका source ~/.bashrcहर बार मिल सकता था । मैं तो करने के लिए मेरे उर्फ परिभाषाओं चलती की कोशिश की ~/.bash_profileऔर यह क्या चाल किया है।

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