Bash / Environment variable

Environment variable

Environment variable бол үйлдлийн системийн хэмжээнд хадгалагдах нэр-утга хосууд юм. Програм бүр эдгээр утгыг унших боломжтой. Нууц үг, API key, тохиргооны мэдээллийг кодонд шууд бичихгүйгээр environment variable-д хадгалах нь хөгжүүлэлтийн хамгийн чухал дадлагуудын нэг.

Байгаа environment variable-уудыг харах

bash
# Бүх environment variable-уудыг жагсаах
env
printenv

# Тодорхой variable-ийн утгыг харах
echo $HOME       # /home/batbold
echo $USER       # batbold
echo $PATH       # /usr/local/bin:/usr/bin:/bin:...
echo $SHELL      # /bin/bash
echo $PWD        # Одоогийн директор

# printenv-ээр нэг variable харах
printenv HOME

Хамгийн чухал суурь variable-ууд:

bash
echo $HOME     # Хэрэглэгчийн home директор
echo $PATH     # Команд хайх директоруудын жагсаалт
echo $USER     # Одоогийн хэрэглэгчийн нэр
echo $HOSTNAME # Компьютерийн нэр
echo $LANG     # Хэлний тохиргоо
echo $EDITOR   # Анхдагч текст засварлагч

Variable тодорхойлох ба ашиглах

bash
# Shell variable — зөвхөн одоогийн shell-д харагдана
MY_NAME="Батболд"
echo $MY_NAME

# Environment variable болгон экспортлох (дэд процессуудад харагдана)
export MY_NAME="Батболд"
export DB_HOST="localhost"
export DB_PORT="5432"

# Нэг мөрөнд тодорхойлж экспортлох
export API_KEY="abc123xyz"

# Унших
echo "Сайн уу, $MY_NAME!"
echo "Database: $DB_HOST:$DB_PORT"

export хийгдээгүй variable нь зөвхөн одоогийн shell-д харагдана. Script эсвэл дэд командуудад дамжуулах бол export шаардлагатай.

.env файл — нууц тохиргоог хадгалах

.env файл нь тохиргооны утгуудыг нэг газар цуглуулдаг. Git-д хэзээ ч commit хийлгэхгүй!

bash
# .env файлын агуулга
DB_HOST=localhost
DB_PORT=5432
DB_NAME=myapp
DB_USER=admin
DB_PASS=supersecret123
API_KEY=pk_live_abc123
APP_ENV=production

Script-д .env файлыг ачаалах:

bash
#!/bin/bash

# .env файл байвал ачаалах
if [ -f .env ]; then
  export $(cat .env | grep -v '^#' | xargs)
  echo ".env файл ачааллаа"
fi

echo "Database: $DB_HOST:$DB_PORT/$DB_NAME"
echo "Орчин: $APP_ENV"

PATH variable

PATH нь командуудыг хаанаас хайхыг тодорхойлдог. Шинэ программ суулгасны дараа PATH-д нэмэх хэрэгтэй болдог:

bash
# PATH-ийн одоогийн утгыг харах
echo $PATH
# /usr/local/bin:/usr/bin:/bin:/usr/local/sbin

# PATH-д шинэ директор нэмэх
export PATH="$PATH:/home/batbold/scripts"

# Энэ өөрчлөлт зөвхөн одоогийн session-д үйлчилнэ
# Байнгын болгохын тулд ~/.bashrc эсвэл ~/.bash_profile-д нэмнэ

~/.bashrc ба ~/.bash_profile

Shell нээгдэх бүрт автоматаар уншигддаг файлууд:

bash
# ~/.bashrc файлд байнгын тохиргоо нэмэх
echo 'export EDITOR="vim"' >> ~/.bashrc
echo 'export MY_SCRIPTS="/home/batbold/scripts"' >> ~/.bashrc
echo 'export PATH="$PATH:$MY_SCRIPTS"' >> ~/.bashrc

# Өөрчлөлтийг одоогийн session-д тэр дор хэрэгжүүлэх
source ~/.bashrc
# эсвэл
. ~/.bashrc

Практик жишээ

bash
#!/bin/bash

# Environment variable-ын утгыг шалгаж, байхгүй бол анхдагч утга ашиглах
DB_HOST="${DB_HOST:-localhost}"
DB_PORT="${DB_PORT:-5432}"
APP_ENV="${APP_ENV:-development}"

echo "Тохиргоо:"
echo "  Database: $DB_HOST:$DB_PORT"
echo "  Орчин:    $APP_ENV"

# Заавал шаардлагатай variable байгаа эсэхийг шалгах
if [ -z "$API_KEY" ]; then
  echo "Алдаа: API_KEY тохируулаагүй байна!"
  exit 1
fi

echo "  API key:  ${API_KEY:0:8}..."   # Зөвхөн эхний 8 тэмдэгтийг харуулна

${VARIABLE:-default} хэлбэр нь variable хоосон байвал анхдагч утга ашиглах маш хэрэгтэй арга. -z нь variable хоосон эсэхийг шалгадаг — хоосон бол true.

Дараагийн хичээлд:

Script аргументуудыг судална — $1, $2, $@, $# ашиглан script-дээ гаднаас утга дамжуулах, уян хатан script бичих арга.