यह एक सामान्य प्रक्रिया है जिसे आप किसी भी खोल के लिए उपयोग कर सकते हैं। किसी भी स्थिति में, आपको यह जानना होगा कि उपयोगकर्ता आमतौर पर किस शेल में लॉग इन करेगा:
path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"
फिर आपको यह पता लगाना होगा कि यह शेल आम तौर पर किस डॉट फाइल को पढ़ेगा:
man $shell
एक शॉर्टकट जो काम कर सकता है, वह उन डॉट-फाइल्स को सूचीबद्ध करने के लिए है जिनमें शेल का नाम है:
ls ~/.*${shell}*
यदि आप जांचना चाहते हैं कि लॉगिन के दौरान कोई एक फाइल वास्तव में पढ़ी गई है, तो आप उनमें से प्रत्येक में फाइल का नाम प्रिंट कर सकते हैं, उदाहरण के लिए:
echo .bashrc
लॉग इन करते समय, आपको तब देखना चाहिए कि कौन सी फाइलें पढ़ी जा रही हैं, और आप यह तय कर सकते हैं कि किसको संशोधित करना है। खबरदार कि आपको उपयोग करने की कोशिश नहीं करनी चाहिए echo "$0"
या इसी तरह करना चाहिए , क्योंकि मूल्य इस $0
बात पर निर्भर करता है कि शेल डॉट-फाइल्स को कैसे प्रोसेस करता है, और गलतफहमी हो सकती है।
जब चर को "स्थायी रूप से" घोषित करने की बात आती है, तो ध्यान दें कि यह केवल सत्र तक फैली हुई है। एक सत्र के बिना एक चर के मूल्य तक पहुंचने का कोई तरीका नहीं है, इसलिए इसका एक के बाहर कोई अर्थ नहीं है। यदि आप "केवल पढ़ने के लिए" का अर्थ है, शेल निर्भर है, और बैश में आप उपयोग कर सकते हैं:
declare -r VAR
अगर यह पहले से ही एक मूल्य है, या
declare -r VAR=value
एक ही समय में इसे असाइन करने के लिए। सभी गोले में यह सुविधा नहीं है।
अधिकांश गोले में एक चर घोषित करने के लिए, आपको एक चर नाम ( [A-Za-z_][A-Za-z0-9_]*
) का उपयोग करना चाहिए , इसके बाद एक बराबर चिह्न (और बराबर चिह्न के आसपास कोई रिक्त स्थान नहीं ), फिर एक मूल्य (अधिमानतः उद्धृत जब तक कि मूल्य एक सरल नहीं है [A-Za-z0-9_]+
)। उदाहरण के लिए:
name="John Doe"
ip=127.0.0.1
HORRIBLE=1