ℹ️ Зачастую, работая с разными окружениями (dev, staging, prod), IT-специалисту приходится переключаться между различными конфигурациями, адресами серверов, или настройками переменных.
🔥 Вместо того чтобы вручную редактировать файлы конфигураций или постоянно вводить разные команды для подключения, можно использовать alias и динамическую подмену окружений в Bash.
📂 1. Создаем конфигурации в виде алиасов:
В файле .bashrc или .zshrc можно задать алиасы для каждого окружения. Но чтобы сделать это более динамично, можно создать отдельный файл с конфигурациями, который будет подгружаться в зависимости от выбранного окружения.
# В .bashrc
alias setenv='source ~/.env_switcher'
# ~/.env_switcher
function switch_env() {
case "$1" in
dev)
export DB_HOST="dev.db.local"
export API_URL="https://dev.api.local"
echo "Switched to DEV environment"
;;
staging)
export DB_HOST="staging.db.local"
export API_URL="https://staging.api.local"
echo "Switched to STAGING environment"
;;
prod)
export DB_HOST="prod.db.local"
export API_URL="https://prod.api.local"
echo "Switched to PROD environment"
;;
*)
echo "Unknown environment: $1"
;;
esac
}
alias dev='switch_env dev'
alias staging='switch_env staging'
alias prod='switch_env prod'
👨💻 2. Использование:
Теперь, чтобы переключиться на нужное окружение, достаточно одной команды:
$ dev
Switched to DEV environment
$ staging
Switched to STAGING environment
ℹ️ Почему это полезно?
- - Удобство: нет необходимости каждый раз редактировать переменные окружения вручную или запоминать, какой сервер и переменные использовать для разных окружений.
- - Меньше ошибок: неправильное окружение может привести к проблемам в продакшене. С такой настройкой легко контролировать, где и что запускается.
- - Гибкость: добавление новых окружений занимает считанные секунды — просто расширьте функцию
switch_env.
✳️ Этот метод отлично подходит для разработчиков и DevOps-специалистов, которые часто работают с разными инфраструктурами и хотят сократить время на переключение между ними.
tags: #полезно #linux #bash
🧭 @recura_tech



