Авторский канал для тех, кто хочет глубже погрузиться в мир Linux.
Подойдет для разработчиков, системных администраторов и DevOps
Реклама: @dad_admin
Post #407
1.09K
Сохраняем и восстанавливаем окружение
Со временем окружение обрастает алиасами, функциями, переменными, путями - целой экосистемой, которую легко потерять при переключении между проектами. Что если сделать снимок текущего состояния shell и потом восстановить его одной командой?
1️⃣ Сохранение окружения. Bash позволяет получить всю информацию о текущем состоянии:
Можно собрать это в файл:
Теперь у вас дамп окружения. Содержит все, что вы настроили вручную или подгрузили через .bashrc, .bash_aliases, и т.д.
2️⃣ Восстановление окружения. Чтобы применить снимок в другой сессии:
Все ваши функции, алиасы и переменные возвращаются как были.
3️⃣ Пример автоматизации. Сделаем удобный скрипт:
Использование:
4️⃣ Сравнение. Финалочка, можно сравнить два снимка:
покажет, что отличается между dev и prod.
BashTex 📱 #bash #utils
Со временем окружение обрастает алиасами, функциями, переменными, путями - целой экосистемой, которую легко потерять при переключении между проектами. Что если сделать снимок текущего состояния shell и потом восстановить его одной командой?
1️⃣ Сохранение окружения. Bash позволяет получить всю информацию о текущем состоянии:
alias # все алиасы
declare -f # все функции
declare -p # все переменные (включая окружение)
Можно собрать это в файл:
{
echo "# Snapshot from $(date)"
echo "# Aliases"
alias
echo
echo "# Functions"
declare -f
echo
echo "# Variables"
declare -p
} > ~/.bash_snapshot
Теперь у вас дамп окружения. Содержит все, что вы настроили вручную или подгрузили через .bashrc, .bash_aliases, и т.д.
2️⃣ Восстановление окружения. Чтобы применить снимок в другой сессии:
source ~/.bash_snapshot
Все ваши функции, алиасы и переменные возвращаются как были.
3️⃣ Пример автоматизации. Сделаем удобный скрипт:
snapshot() {
local file="${1:-~/.bash_snapshot_$(date +%F_%H-%M-%S)}"
{
alias
declare -f
declare -p | grep -v '^declare -[a-z]* BASH'
} > "$file"
echo "Saved snapshot to $file"
}
restore() {
local file="${1:-~/.bash_snapshot_latest}"
[[ -f $file ]] && source "$file" && echo "Restored from $file"
}
Использование:
snapshot ~/envs/dev.env
restore ~/envs/dev.env
4️⃣ Сравнение. Финалочка, можно сравнить два снимка:
diff <(grep -v '^#' dev.env) <(grep -v '^#' prod.env)
покажет, что отличается между dev и prod.
BashTex 📱 #bash #utils
- 👍 9

