Ravindra BagaleCourses & study guides English

Linux Environment Variables, PATH, .bashrc आणि alias सोप्या भाषेत

तुम्ही चालवता त्या प्रत्येक program ला settings ची छोटी पिशवी मिळते, तिला environment variables म्हणतात: तुम्ही कोण, home folder, commands कुठे शोधायच्या, आवडता editor, API endpoints वगैरे. या chapter मधे ते वाचणं, set, export आणि काढणं शिकाल, PATH commands कसे शोधतो, कोणती startup file कधी चालते, आणि aliases typing कशी वाचवतात.

या chapter मध्ये तुम्ही काय शिकाल

  • echo, env आणि printenv ने variables वाचा
  • Shell vs exported variables set, आणि unset
  • PATH समजा आणि safely बदला
  • which, type आणि command -v वापरा
  • .bashrc, .bash_profile, /etc/profile.d आणि /etc/environment ओळखा
  • Aliases, functions आणि चांगला PS1 बनवा

1. रोजचं उदाहरण: शाळेची bag आणि timetable

हे का लागतं?

रोज सकाळी मूल भिंतीवरच्या timetable प्रमाणे शाळेची bag भरतं. Bag मधे जे आहे ते शाळेत जातं; table वर राहिलेलं घरीच. लहान भावाने bag copy केली तर त्याला तीच पुस्तकं मिळतात. आणि मूल timetable वर लांब विषयांची छोटी टोपणनावं लिहितं.

हे काय आहे?

भिंतीवरचा timetable = .bashrc. Bag = exported environment. Table वरच्या वस्तू = shell-only variables. भावाने bag copy = child process ला env मिळणं. टोपणनावं = aliases.

कसं करायचं (step by step)

Login करून command type केल्यावर काय होतंLogin shell /etc/profile आणि /etc/profile.d/*.sh वाचतोमग ~/.bash_profile, ~/.bash_login, ~/.profile पैकी पहिलीती file बहुतेक ~/.bashrc source करतेतुम्ही शब्द type करता; bash aliases, functions, builtins तपासतोनसेल तर bash प्रत्येक PATH folder डावीकडून उजवीकडे शोधतोपहिला match exported variables च्या copy सह चालतो
नवीन terminal tab (non-login) फक्त ~/.bashrc वाचतो.

2. echo $VAR: एक variable वाचा

हे का लागतं?

Value पटकन तपासायची, जसं home folder किंवा कोणता editor set.

हे काय आहे?

$NAME value मधे बदलतो. Spaces ठेवायला "$NAME" quotes मधे. ${NAME:-default} रिकामं असेल तर default. Common: HOME, USER, SHELL, PWD, LANG, EDITOR, HOSTNAME, PATH.

कसं करायचं (step by step)

  1. Home आणि user.
echo "$USER lives in $HOME"

Output:

ravi lives in /home/ravi

याचा अर्थ: एका line मधे दोन variables.

  1. Default value.
echo "${EDITOR:-nano}"

Output:

nano

याचा अर्थ: EDITOR रिकामा, म्हणून nano.

3. env आणि printenv: environment list

हे का लागतं?

App दोन servers वर वेगळं वागतं तेव्हा environments तुलना करा.

हे काय आहे?

env आणि printenv सगळे exported variables. printenv NAME एक ($ नाही). env -i CMD रिकाम्या environment ने CMD. env VAR=x CMD फक्त त्या run साठी extra variable.

कसं करायचं (step by step)

  1. मोजा आणि filter.
env | wc -l; env | grep -i ^lang

Output:

28
LANG=en_IN.UTF-8

याचा अर्थ: 28 exported variables.

  1. एक value.
printenv SHELL

Output:

/bin/bash

याचा अर्थ: $ लागत नाही.

  1. Clean environment ने.
env -i /usr/bin/env

Output:

(no output)

याचा अर्थ: काही inherit नाही.

4. Variables set: shell vs export

हे का लागतं?

Set केलेलं variable export केलं नाही तर तुम्ही सुरू केलेल्या programs ना दिसत नाही. यात अनेक beginners गोंधळतात.

हे काय आहे?

NAME=value shell variable (= भोवती spaces नाही). export NAME किंवा export NAME=value environment मधे, म्हणजे child processes ना मिळतं. NAME=value cmd फक्त एका command साठी. Startup file मधे save केलं नाही तर terminal बंद झाल्यावर जातं.

कसं करायचं (step by step)

  1. Exported नाही.
CITY=Pune; bash -c 'echo "child sees: $CITY"'

Output:

child sees: 

याचा अर्थ: Child ला मिळालं नाही.

  1. Exported.
export CITY=Pune; bash -c 'echo "child sees: $CITY"'

Output:

child sees: Pune

याचा अर्थ: आता bag मधे.

  1. एका command साठी.
TZ=Asia/Tokyo date +%H:%M; date +%H:%M

Output:

17:42
14:12

याचा अर्थ: फक्त पहिल्या date ला TZ दिसला.

  1. Space ची चूक.
CITY = Pune

Output:

bash: CITY: command not found

याचा अर्थ: = भोवती spaces नको.

5. unset आणि readonly

हे का लागतं?

चुकीचं किंवा secret value session मधून काढा, किंवा value बदलण्यापासून protect करा.

हे काय आहे?

unset NAME shell आणि environment मधून काढतो. export -n NAME shell मधे ठेवतो पण export थांबवतो. readonly NAME=value या shell साठी constant.

कसं करायचं (step by step)

  1. Token काढा.
export API_TOKEN=abc123; unset API_TOKEN; echo "[${API_TOKEN}]"

Output:

[]

याचा अर्थ: गेलं.

  1. Readonly.
readonly STAGE=prod; STAGE=dev

Output:

bash: STAGE: readonly variable

याचा अर्थ: Protected.

6. PATH: commands कुठे सापडतात

हे का लागतं?

Tool install केल्यावर 'command not found' म्हणजे जवळजवळ नेहमी त्याचा folder PATH मधे नाही.

हे काय आहे?

PATH म्हणजे : ने वेगळे folders. bash डावीकडून उजवीकडे शोधतो आणि पहिला match चालवतो. Folder जोडा: export PATH="$HOME/bin:$PATH" (पुढे = जिंकतो) किंवा "$PATH:/opt/tool/bin" (शेवटी). PATH मधे . कधी नको. hash -r bash च्या लक्षात ठेवलेल्या जागा साफ.

कसं करायचं (step by step)

  1. एका line ला एक folder.
echo "$PATH" | tr ':' '\n'

Output:

/usr/local/bin
/usr/bin
/bin
/usr/local/sbin
/usr/sbin

याचा अर्थ: वरून खाली शोधलं जातं.

  1. Tool सापडत नाही.
terraform version

Output:

bash: terraform: command not found

याचा अर्थ: ते /opt/terraform मधे.

  1. या session साठी जोडा.
export PATH="$PATH:/opt/terraform" && terraform version

Output:

Terraform v1.9.8

याचा अर्थ: आता चालतं.

  1. Permanent करा.
echo 'export PATH="$PATH:/opt/terraform"' >> ~/.bashrc && source ~/.bashrc

Output:

(no output)

याचा अर्थ: प्रत्येक नव्या shell मधे.

7. which, type आणि command -v

हे का लागतं?

python type केलं आणि चुकीचं version. नेमकं काय चालतं ते कळायला हवं.

हे काय आहे?

which NAME PATH मधली पहिली file. which -a सगळ्या. type NAME alias, function, builtin की file ते सांगतो (जास्त अचूक). command -v NAME 'installed आहे का?' साठी script-safe test.

कसं करायचं (step by step)

  1. सगळे pythons.
which -a python3

Output:

/usr/local/bin/python3
/usr/bin/python3

याचा अर्थ: पहिला जिंकतो.

  1. ll म्हणजे काय?
type ll

Output:

ll is aliased to `ls -alF'

याचा अर्थ: which हे दाखवणार नाही.

  1. Script मधे.
command -v jq >/dev/null || echo 'please install jq'

Output:

please install jq

याचा अर्थ: Clean check.

8. ~/.bashrc vs ~/.bash_profile

हे का लागतं?

काही जोडलं आणि नव्या tab मधे चालतं पण SSH वर नाही, किंवा उलट. Startup file निवड हे समजावते.

हे काय आहे?

Login shells (SSH, console) ~/.bash_profile (किंवा ~/.profile) वाचतात. Interactive non-login shells (नवा terminal tab) ~/.bashrc. Best practice: सगळं ~/.bashrc मधे आणि ~/.bash_profile ने ते source. आत्ता लागू करायला source ~/.bashrc (किंवा . ~/.bashrc).

Fileकधी चालते
/etc/profile, /etc/profile.d/*.shLogin shells, सगळे users
~/.bash_profile or ~/.profileLogin shell, तुम्ही
~/.bashrcप्रत्येक interactive shell
/etc/bashrc or /etc/bash.bashrcInteractive, सगळे users
/etc/environmentLogin ला PAM, script नाही

कसं करायचं (step by step)

  1. Profile bashrc source करते का.
grep -n bashrc ~/.bash_profile

Output:

2:[ -f ~/.bashrc ] && . ~/.bashrc

याचा अर्थ: छान, edit ला एकच जागा.

  1. हा login shell आहे का?
shopt -q login_shell && echo login || echo non-login

Output:

login

याचा अर्थ: SSH sessions login shells.

  1. बदल आत्ता लागू.
source ~/.bashrc

Output:

(no output)

याचा अर्थ: Logout लागत नाही.

9. /etc/environment आणि /etc/profile.d

हे का लागतं?

Proxy किंवा company tool path server वरच्या प्रत्येक user साठी, फक्त तुमच्यासाठी नाही.

हे काय आहे?

/etc/environment मधे साध्या KEY=value lines (export नाही, $VAR expansion नाही), login ला वाचल्या जातात. /etc/profile.d/NAME.sh सगळ्या users च्या login shells चालवतात; तिथे export आणि $PATH वापरू शकता. systemd services हे वाचत नाहीत; unit मधे Environment=.

कसं करायचं (step by step)

  1. सगळ्यांसाठी company proxy.
echo 'https_proxy=http://proxy.corp:3128' | sudo tee -a /etc/environment

Output:

https_proxy=http://proxy.corp:3128

याचा अर्थ: साधी line, export नाही.

  1. सगळ्यांसाठी tool path.
echo 'export PATH="$PATH:/opt/terraform"' | sudo tee /etc/profile.d/terraform.sh

Output:

export PATH="$PATH:/opt/terraform"

याचा अर्थ: पुढच्या login नंतर.

  1. Service ला variable हवा.
sudo systemctl edit shop-api
[Service]
Environment=NODE_ENV=production

Output:

(override saved)

याचा अर्थ: Services .bashrc ignore करतात.

10. alias आणि unalias

हे का लागतं?

रोज तेच लांब commands type करता. Alias ते छोटे करतो आणि safety flags जोडतो.

हे काय आहे?

alias NAME='command' बनवतो. नुसतं alias सगळे list. unalias NAME काढतो. ठेवायला ~/.bashrc मधे save. \NAME किंवा command NAME alias skip करून खरा command. Scripts मधे aliases default चालत नाहीत.

कसं करायचं (step by step)

  1. छोटं आणि safe.
alias ll='ls -lh' rm='rm -i' k='kubectl'

Output:

(no output)

याचा अर्थ: आता rm आधी विचारतो.

  1. List.
alias | head -3

Output:

alias k='kubectl'
alias ll='ls -lh'
alias rm='rm -i'

याचा अर्थ: तुमचे shortcuts.

  1. एकदा alias skip.
\rm old.log

Output:

(no output)

याचा अर्थ: या वेळी प्रश्न नाही.

  1. काढा.
unalias k && type k

Output:

bash: type: k: not found

याचा अर्थ: गेलं.

11. मोठ्या shortcuts साठी shell functions

हे का लागतं?

Aliases मधे arguments घेऊ शकत नाहीत. Functions घेतात, आणि अनेक steps चालवतात.

हे काय आहे?

~/.bashrc मधे NAME() { commands; }. $1, $2 arguments, "$@" सगळे. declare -f NAME दाखवतो. unset -f NAME काढतो.

कसं करायचं (step by step)

  1. Folder बनवून आत जा.
mkcd() { mkdir -p "$1" && cd "$1"; }; mkcd /tmp/demo && pwd

Output:

/tmp/demo

याचा अर्थ: एक शब्द, दोन steps.

  1. Service चे logs.
logs() { journalctl -u "$1" -n "${2:-50}" --no-pager; }; logs nginx 5

Output:

(5 nginx log lines)

याचा अर्थ: Default 50 lines.

12. PS1: उपयोगी prompt

हे का लागतं?

चुकून production server वर command type करणं हा classic outage. स्पष्ट prompt तुम्ही कुठे आहात ते दाखवतो.

हे काय आहे?

PS1 prompt set करतो. \u user, \h host, \w folder, \$ root साठी #. Colours \[\e[31m\] (red) आणि \[\e[0m\] (reset). ~/.bashrc मधे.

कसं करायचं (step by step)

  1. साधा.
PS1='\u@\h:\w\$ '

Output:

ravi@web1:~/app$

याचा अर्थ: User, host, folder.

  1. लाल PROD tag.
PS1='\[\e[41m\]PROD\[\e[0m\] \u@\h:\w\$ '

Output:

PROD ravi@db1:~$

याचा अर्थ: चुकणं अशक्य.

13. HISTSIZE, HISTCONTROL आणि history tricks

हे का लागतं?

History परत type करणं वाचवतं आणि incident मधे काय केलं ते आठवायला मदत करतं.

हे काय आहे?

HISTSIZE (memory) आणि HISTFILESIZE (~/.bash_history) किती ठेवायचं. HISTCONTROL=ignoreboth duplicates आणि space ने सुरू lines skip (secrets साठी सुरुवातीला space). HISTTIMEFORMAT='%F %T ' times. history, !N, search साठी Ctrl+R.

कसं करायचं (step by step)

  1. चांगले history settings.
cat >> ~/.bashrc <<'X'
HISTSIZE=10000
HISTFILESIZE=20000
HISTCONTROL=ignoreboth
HISTTIMEFORMAT='%F %T '
X

Output:

(no output)

याचा अर्थ: मोठी, स्वच्छ, time सह history.

  1. Times सह.
source ~/.bashrc; history 2

Output:

  501  2026-10-25 14:20:11 source ~/.bashrc
  502  2026-10-25 14:20:14 history 2

याचा अर्थ: कधी चालवलं.

14. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Shruti, fintech, PunePayment servers वर लाल PROD promptPS1='PROD \u@\h:\w\$ '
Jack, game studio, Austinसगळ्या users साठी SDK PATH मधे/etc/profile.d/sdk.sh
Leila, airline, Abu Dhabi/etc/environment ने proxyhttps_proxy=http://proxy:3128
Pedro, logistics, Lisbonkubectl साठी k aliasalias k=kubectl
Arjun, data team, Bengaluruwhich -a ने योग्य pythonwhich -a python3
Nina, SaaS, StockholmEnvironment= ने service envEnvironment=NODE_ENV=production

15. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
bash: terraform: command not foundFolder PATH मधे नाहीPATH मधे जोडा.
export PATH="$PATH:/opt/terraform"
bash: CITY: command not found (after CITY = Pune)= भोवती spacesNAME=value लिहा.
CITY=Pune
Child program does not see the variableExport नाहीexport करा.
export CITY
Change in .bashrc not working over SSHLogin shell .bash_profile वाचतो, ती .bashrc source करत नाही.bash_profile मधून .bashrc source.
echo '. ~/.bashrc' >> ~/.bash_profile
ls: command not found (every command broken)PATH append नाही, overwrite झालाPATH restore, line fix.
export PATH=/usr/local/bin:/usr/bin:/bin
Service ignores my variablesystemd .bashrc वाचत नाहीEnvironment= किंवा EnvironmentFile=.
sudo systemctl edit shop-api
bash: STAGE: readonly variableReadonly केलं होतंनवा shell उघडा.
bash
Old version still runs after installbash hash cache किंवा आधीची PATH entryHash साफ करा आणि क्रम तपासा.
hash -r; which -a node
Alias works in terminal but not in scriptNon-interactive shells मधे aliases बंदपूर्ण command किंवा function.
command -v kubectl
sudo: mytool: command not foundsudo secure_path वापरतो, तुमचा PATH नाहीFull path.
sudo /opt/mytool/bin/mytool

16. Troubleshooting step by step

हे का लागतं?

Command किंवा variable अपेक्षेप्रमाणे नसेल तर bash ला काय दिसतं ते step by step तपासा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. ते काय आहे?
type -a mytool
  1. PATH कुठे बघतो?
echo "$PATH" | tr ':' '\n'
  1. Variable set आणि exported?
declare -p MYVAR; printenv MYVAR
  1. कोणत्या startup files चालल्या?
shopt -q login_shell && echo login; grep -n bashrc ~/.bash_profile
  1. कोण set करतो?
grep -rn MYVAR ~/.bashrc ~/.bash_profile /etc/profile.d /etc/environment 2>/dev/null
  1. Clean shell मधे test.
env -i bash -l -c 'echo $PATH'

17. Lab 1: Variables, export आणि PATH

हे का लागतं?

Shell आणि exported variables मधला फरक बघा, मग स्वतःचा bin folder permanently PATH मधे.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. Shell vs export.
A=1; export B=2; bash -c 'echo A=$A B=$B'

Output:

A= B=2
  1. ~/bin मधे script.
mkdir -p ~/bin && printf '#!/bin/bash\necho hello from bin\n' > ~/bin/hi && chmod +x ~/bin/hi

Output:

(no output)
  1. अजून सापडत नाही?
hi

Output:

bash: hi: command not found (or it works if ~/bin is already in PATH)
  1. PATH मधे permanently.
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc && hi

Output:

hello from bin
  1. क्रम तपासा.
type -a hi; echo "$PATH" | tr ':' '\n' | head -n1

Output:

hi is /home/ravi/bin/hi
/home/ravi/bin

18. Lab 2: Aliases, function आणि safe prompt

हे का लागतं?

~/.bashrc मधे aliases आणि function, coloured prompt, आणि चांगली history.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. bashrc backup.
cp ~/.bashrc ~/.bashrc.bak

Output:

(no output)
  1. Aliases आणि function.
cat >> ~/.bashrc <<'X'
alias ll='ls -lh'
alias rm='rm -i'
mkcd() { mkdir -p "$1" && cd "$1"; }
PS1='\[\e[32m\]\u@\h\[\e[0m\]:\w\$ '
HISTCONTROL=ignoreboth
X

Output:

(no output)
  1. Load आणि test.
source ~/.bashrc && type ll && mkcd /tmp/lab24 && pwd

Output:

ll is aliased to `ls -lh'
/tmp/lab24
  1. Alias skip.
touch x && \rm x && echo removed

Output:

removed
  1. हवं तर restore.
cp ~/.bashrc.bak ~/.bashrc && source ~/.bashrc

Output:

(no output)

Ravindra Bagale's Tip

When you change PATH, always keep $PATH in the new value, and back up ~/.bashrc first. One wrong line like PATH=/opt/tool breaks every command, and then you have to type full paths like /usr/bin/vi to fix it.

19. नेहमी विचारले जाणारे प्रश्न

प्र. export vs export नाही?

export शिवाय फक्त हा shell. export ने त्याने सुरू केलेले programs पण.

प्र. Variable का गायब?

फक्त त्या terminal मधे set. ~/.bashrc मधे save करा.

प्र. PATH च्या पुढे की शेवटी?

System tools override ला पुढे, नवे safely जोडायला शेवटी.

प्र. which vs type?

type ला aliases, functions आणि builtins कळतात; which फक्त files.

प्र. .bashrc edit नंतर logout?

नाही, source ~/.bashrc.

प्र. Secrets कुठे?

.bashrc किंवा history मधे नाही. Secrets manager किंवा root-only EnvironmentFile.

प्र. zsh चं काय?

तेच विचार; files ~/.zshrc आणि ~/.zprofile.

प्र. sudo ला command का सापडत नाही?

sudo sudoers मधला secure_path वापरतो. Full path.

20. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. सगळे environment variables?

env किंवा printenv.

प्र. Child processes साठी variable?

export NAME=value.

प्र. PATH म्हणजे?

Commands शोधायच्या folders ची list.

प्र. Alias कसा?

alias ll='ls -lh'.

Mid level level

प्र. .bashrc vs .bash_profile?

bashrc प्रत्येक interactive shell; bash_profile login shells, बहुतेक bashrc source.

प्र. कोणती binary चालते?

type -a किंवा which -a.

प्र. सगळ्या users साठी variable?

/etc/environment किंवा /etc/profile.d/*.sh.

प्र. वेगळ्या variable ने एक command?

VAR=value command.

Senior level

प्र. PATH मधे '.' धोकादायक का?

Current folder मधली common command सारख्या नावाची malicious file चालू शकते.

प्र. Env vars आणि twelve-factor apps?

Config env मधे, code मधे नाही; प्रत्येक environment ला inject; secrets images आणि logs बाहेर.

प्र. cron job आणि SSH session चा PATH वेगळा का?

cron profiles वाचत नाही; minimal environment.

प्र. Slow shell start-up debug?

bash -x -l -c exit किंवा time bash -i -c exit; rc files मधल्या slow lines.

घरी करून बघा

  1. खरंच वापराल असे तीन aliases आणि argument घेणारं एक function लिहा. ~/.bashrc मधे ठेवा आणि प्रत्येकाचं type output दाखवा.
  2. तुमचा PATH एका line ला एक folder print करा आणि प्रत्येक folder कुठून आला ते समजवा.

सराव Tasks

या scenario बद्दल

Ahmednagar Sugar Co-op हा अहिल्यानगर मधला साखर सहकारी व्यवसाय आहे. Balasaheb Pawar त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं Home folder

का: Settings प्रत्येक program चालवतात.

काय करायचं: HOME variable print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं एक variable

का: Settings प्रत्येक program चालवतात.

काय करायचं: printenv ने PATH.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं env filter

का: Settings प्रत्येक program चालवतात.

काय करायचं: PROXY असलेल्या env lines, case ignore.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Variable export

का: Settings प्रत्येक program चालवतात.

काय करायचं: APP_ENV production set आणि export.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Variable काढा

का: Settings प्रत्येक program चालवतात.

काय करायचं: API_TOKEN variable काढा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं bashrc लागू

का: Settings प्रत्येक program चालवतात.

काय करायचं: ~/.bashrc बदल आत्ता लागू.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Alias बनवा

का: Settings प्रत्येक program चालवतात.

काय करायचं: kubectl साठी alias k.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Alias काढा

का: Settings प्रत्येक program चालवतात.

काय करायचं: alias k काढा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम PATH मधे जोडा

का: Settings प्रत्येक program चालवतात.

काय करायचं: /opt/tool/bin PATH च्या शेवटी.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम PATH per line

का: Settings प्रत्येक program चालवतात.

काय करायचं: PATH एका line ला एक folder.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम सगळ्या copies

का: Settings प्रत्येक program चालवतात.

काय करायचं: PATH मधल्या सगळ्या python3 जागा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम ते काय?

का: Settings प्रत्येक program चालवतात.

काय करायचं: ll alias आहे का ते शोधा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम एका command चा variable

का: Settings प्रत्येक program चालवतात.

काय करायचं: फक्त त्या command साठी TZ=Asia/Tokyo ने date.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Script-safe check

का: Settings प्रत्येक program चालवतात.

काय करायचं: Script-safe पद्धतीने jq चा path.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Clean environment

का: Settings प्रत्येक program चालवतात.

काय करायचं: रिकाम्या environment ने env.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Login shell?

का: Settings प्रत्येक program चालवतात.

काय करायचं: shopt ने हा login shell आहे का.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. $VAR, env आणि printenv variables वाचतात.
  2. NAME=value set; export children शी share; unset काढतो.
  3. PATH डावीकडून उजवीकडे; जोडताना $PATH ठेवा.
  4. type, which आणि command -v काय चालतं ते दाखवतात.
  5. Interactive साठी bashrc, login साठी bash_profile, सगळ्यांसाठी /etc.
  6. alias, functions, PS1 आणि history shell तुमचा बनवतात.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

export vs set. Programs env मधून settings. NAME=value: फक्त हा shell. export: children ना दिसतं. Value export.
उजळणी card: export vs set · PNG download करा · Card page उघडा
PATH safely. command not found का. डावीकडून उजवीकडे. नेहमी $PATH ठेवा. Folder जोडा.
उजळणी card: PATH safely · PNG download करा · Card page उघडा
NAME=value vs export NAME=value. फक्त हा shell. / Child programs पण.
तुलना: NAME=value vs export NAME=value · PNG download करा · Card page उघडा
~/.bashrc vs ~/.bash_profile. प्रत्येक interactive shell. / Login shells.
तुलना: ~/.bashrc vs ~/.bash_profile · PNG download करा · Card page उघडा
.bashrc vs .bash_profile?. profile: login shells. bashrc: प्रत्येक interactive. आत्ता लागू.
मुलाखत card: .bashrc vs .bash_profile? · PNG download करा · Card page उघडा
which vs type?. which: PATH मधल्या files. type: aliases, builtins पण. ll तपासा.
मुलाखत card: which vs type? · PNG download करा · Card page उघडा
PATH मधे . का नाही?. खोटा ls चालू शकतो. Local files ./ ने. Script चालवा.
मुलाखत card: PATH मधे . का नाही? · PNG download करा · Card page उघडा
Service env ignore?. systemd bashrc वाचत नाही. Environment= वापरा. Override जोडा.
मुलाखत card: Service env ignore? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.