Environment Variables और export
In this page:
VARIABLE_NAME="value"
export VARIABLE_NAME
export एक Variable को Inheritable बनाता है
Default रूप से, script में assign किया गया एक variable सिर्फ उस script के अपने shell में visible है, इसके launch किए किसी program को नहीं। export variable को flag करता है ताकि यह उस point से script द्वारा start किए हर child process को दिए environment का हिस्सा बन जाए।
उदाहरण: export Makes a Variable Inheritable
#!/bin/bash
GREETING="hello from parent"
export GREETING
bash -c 'echo "Child sees: $GREETING"'
Login to try C/C++/Java/PHP code in the editor
Unexported Variables Local रहते हैं
एक variable जो कभी export नहीं हुआ सिर्फ current shell और इसके scope को directly inherit करने वाले किसी subshells में visible है -- यह separately invoke किए किसी child process में visible नहीं होगा।
इस distinction को miss करना आसान है क्योंकि दोनों तरह के variables identical दिखते हैं जब आप उन्हें उसी script में बस echo करते हैं।
LOCAL_ONLY के लिए एक empty value print करता है क्योंकि यह कभी export नहीं हुआ था।उदाहरण: Unexported Variables Stay Local
#!/bin/bash
LOCAL_ONLY="not exported"
bash -c 'echo "Child sees LOCAL_ONLY as: [$LOCAL_ONLY]"'
Login to try C/C++/Java/PHP code in the editor
Common Built-in Environment Variables
Bash और operating system login पर कई environment variables pre-populate करते हैं, जैसे HOME (current user की home directory), USER (username), और PATH (commands search करने के लिए directories की list)।
Scripts systems के बीच अलग values hard-code करने के बजाय आमतौर पर इन्हें पढ़ती हैं।
उदाहरण: Common Built-in Environment Variables
#!/bin/bash
echo "Home directory: $HOME"
echo "Current user: $USER"
echo "First PATH entry: $(echo "$PATH" | cut -d: -f1)"
Login to try C/C++/Java/PHP code in the editor
PATH को Safely Extend करना
PATH में एक directory जोड़ते समय, नई assignment में हमेशा existing value ($PATH) शामिल करें, otherwise आप इसे पूरी तरह overwrite कर देते हैं और shell standard commands नहीं ढूंढ पाती।
एक colon separator के साथ append या prepend करना सभी पिछले search locations को intact रखता है।
उदाहरण: Safely Extending PATH
#!/bin/bash
export PATH="/usr/local/mytools:$PATH"
echo "$PATH" | tr ':' '\n' | head -n 3
Login to try C/C++/Java/PHP code in the editor
- यह मान लेना कि हर shell variable automatically आपके call किए child processes/scripts को available है; default रूप से variables current shell तक local हैं और inherit होने के लिए
exportकिया जाना ज़रूरी है। - यह सोचना कि
exportvariable को permanently child में दोनों directions में copy करता है; एक child process द्वारा एक exported variable में किए गए changes कभी parent shell में वापस नहीं आते। PATHजैसे well-known environment variables को पहले old value save किए बिना modify करना, जैसेPATH=/usr/local/bin/binकी बजायPATH=/usr/local/bin:$PATH, जो दूसरे commands ढूंढने की ability wipe out कर सकता है।
export VAR=value(या plain assignment के बादexport VAR) एक variable को child processes को pass किए environment का हिस्सा बनाता है।- Environment variables start होने के moment पर child processes द्वारा inherit होते हैं, और child में changes parent में वापस propagate नहीं होते।
- आम built-in environment variables में
PATH,HOME,USER, औरPWDशामिल हैं। envयाprintenvcurrently exported सभी environment variables list करता है।
Chapter Quiz — Complete all 13 topics to unlock
0/13 topics done
Complete these topics first: