← Back to Bash Course | Chapter 2: Variables & Types | Lesson 6 of 13

Environment Variables और export

एक environment variable एक regular variable है जो इस तरह mark किया गया है कि यह उस script द्वारा launch किए गए किसी भी program को भी visible हो, सिर्फ script को खुद नहीं।
Syntax
bash
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

bash
#!/bin/bash
GREETING="hello from parent"
export GREETING
bash -c 'echo "Child sees: $GREETING"'

Unexported Variables Local रहते हैं

एक variable जो कभी export नहीं हुआ सिर्फ current shell और इसके scope को directly inherit करने वाले किसी subshells में visible है -- यह separately invoke किए किसी child process में visible नहीं होगा।

इस distinction को miss करना आसान है क्योंकि दोनों तरह के variables identical दिखते हैं जब आप उन्हें उसी script में बस echo करते हैं।

Warning: Child process LOCAL_ONLY के लिए एक empty value print करता है क्योंकि यह कभी export नहीं हुआ था।

उदाहरण: Unexported Variables Stay Local

bash
#!/bin/bash
LOCAL_ONLY="not exported"
bash -c 'echo "Child sees LOCAL_ONLY as: [$LOCAL_ONLY]"'

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

bash
#!/bin/bash
echo "Home directory: $HOME"
echo "Current user: $USER"
echo "First PATH entry: $(echo "$PATH" | cut -d: -f1)"

PATH को Safely Extend करना

PATH में एक directory जोड़ते समय, नई assignment में हमेशा existing value ($PATH) शामिल करें, otherwise आप इसे पूरी तरह overwrite कर देते हैं और shell standard commands नहीं ढूंढ पाती।

एक colon separator के साथ append या prepend करना सभी पिछले search locations को intact रखता है।

उदाहरण: Safely Extending PATH

bash
#!/bin/bash
export PATH="/usr/local/mytools:$PATH"
echo "$PATH" | tr ':' '\n' | head -n 3
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. यह मान लेना कि हर shell variable automatically आपके call किए child processes/scripts को available है; default रूप से variables current shell तक local हैं और inherit होने के लिए export किया जाना ज़रूरी है।
  2. यह सोचना कि export variable को permanently child में दोनों directions में copy करता है; एक child process द्वारा एक exported variable में किए गए changes कभी parent shell में वापस नहीं आते।
  3. 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 या printenv currently exported सभी environment variables list करता है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.