Коротко о главном
Bash остаётся оболочкой по умолчанию в большинстве серверных и десктопных дистрибутивов Linux. Она нужна администраторам, разработчикам и всем, кто выполняет команды в терминале. В статье разберём базовую настройку, работу с историей, алиасами, функциями и безопасными скриптами. Примеры подходят для Debian, Ubuntu, Fedora и Arch.
Правильно настроенный Bash ускоряет повседневную работу и уменьшает число ошибок. История с поиском, автодополнение и короткие функции избавляют от повторного ввода длинных команд. Понимание Bash помогает читать чужие скрипты и писать переносимую автоматизацию. Это навык, который используется почти в каждой задаче на Linux.
В тестовой среде bash запускается за пару минут. В рабочей — важны воспроизводимость, резервные копии, мониторинг и понятный план восстановления. Разберём, как подойти к этому системно.
Что меняется в рабочей среде
В тестовой среде достаточно, чтобы bash запускался. В продакшене добавляются требования к доступности, безопасности и восстановлению. Чем раньше вы зафиксируете эти требования, тем меньше придётся переделывать.
Базовая установка
Установка
В Debian, Ubuntu и Linux Mint используется пакетный менеджер APT:
sudo apt install bash
В Fedora и RHEL-совместимых системах пакет ставится через DNF:
sudo dnf install bash
В Arch Linux и производных пакет доступен в официальных репозиториях:
sudo pacman -S bash
Настройка и проверка
1. Проверьте версию и активную оболочку
Сначала убедитесь, что Bash установлен и именно он обслуживает текущий терминал. Команда ps показывает процесс оболочки, а вывод версии помогает понять доступный синтаксис. Если активна другая оболочка, настройки можно проверить отдельным запуском bash.
bash --version | head -n 1
ps -p $$ -o comm=
2. Сделайте резервную копию конфигурации
Файл ~/.bashrc читается интерактивными оболочками и обычно содержит пользовательские настройки. Перед правкой сохраните копию, чтобы быстро вернуться к рабочему состоянию. Откройте файл в любом удобном редакторе.
cp ~/.bashrc ~/.bashrc.bak
vim ~/.bashrc
3. Добавьте базовые параметры
Блок из поля config включает подробную историю, дополнение путей через globstar и удобный редактор по умолчанию. Параметр ignoreboth не записывает команды с ведущим пробелом и повторяющиеся строки. После сохранения загрузите файл заново и проверьте историю.
source ~/.bashrc
history | tail -n 5
4. Создайте алиасы и функцию
Алиасы сокращают часто используемые команды, а функции позволяют выполнить несколько действий с аргументами. Добавьте примеры в конец ~/.bashrc. Функция mkcd создаёт каталог и сразу переходит в него.
alias ll='ls -alF'
mkcd() { mkdir -p "$1" && cd "$1"; }
5. Напишите безопасный скрипт
Для автоматизации создайте отдельный файл с shebang и строгим режимом выполнения. set -euo pipefail останавливает скрипт при ошибке, необъявленной переменной или сбое в конвейере. Кавычки вокруг переменных защищают пути с пробелами.
#!/usr/bin/env bash
set -euo pipefail
for file in *.txt; do
printf '%s: ' "$file"
wc -l < "$file"
done
Конфигурация для повторяемого развёртывания
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
# ~/.bashrc
HISTCONTROL=ignoreboth
HISTSIZE=10000
HISTFILESIZE=20000
shopt -s histappend checkwinsize globstar
export EDITOR=vim
export VISUAL=vim
PS1='\u@\h:\w\$ '
Безопасность и наблюдаемость
Ограничьте доступ к административным интерфейсам, включите логирование и проверяйте, что изменения конфигурации применяются автоматически. Ручные правки на сервере должны быть исключением, а не нормой.
Чек-лист
- Версии пакетов и конфигурация хранятся в репозитории или системе управления.
- Есть резервная копия данных и проверенный сценарий восстановления.
- Административный доступ ограничен по сети и снабжён отдельными учётными записями.
- Логи и метрики собираются, а оповещения настроены на реальные пороги.
- Изменения проходят проверку на тестовом стенде до выката.
- Есть план отката и ответственный за его выполнение.
Практические советы
Эти рекомендации проверены на повседневных задачах. Начните с тех, которые закрывают вашу текущую боль, а не со всего списка сразу.
Совет 1. Заключайте переменные в двойные кавычки: это защищает от разбиения на
Заключайте переменные в двойные кавычки: это защищает от разбиения на слова и подстановки шаблонов.
Совет 2. Используйте command -v имя вместо which, если проверка должна работать
Используйте command -v имя вместо which, если проверка должна работать в скриптах и разных дистрибутивах.
Совет 3. Для новых скриптов указывайте #!/usr/bin/env bash, чтобы не зависеть о
Для новых скриптов указывайте #!/usr/bin/env bash, чтобы не зависеть от расположения интерпретатора.
Совет 4. Применяйте set -euo pipefail в критичных скриптах, но проверяйте места
Применяйте set -euo pipefail в критичных скриптах, но проверяйте места, где ненулевой код возврата ожидаем.
Совет 5. Не разбирайте вывод ls в скриптах: для файлов используйте glob, find и
Не разбирайте вывод ls в скриптах: для файлов используйте glob, find или fd с нулевым разделителем.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
1. После правки ~/.bashrc появляется сообщение command not found или syntax error.
Откройте файл, проверьте кавычки и пути, затем выполните bash -n ~/.bashrc. Временно верните копию командой cp ~/.bashrc.bak ~/.bashrc.
2. Скрипт с массивом или конструкцией [[ ]] завершается ошибкой bad substitution.
Проверьте shebang: конструкция запущена через sh или dash. Запустите файл как bash script.sh или установите #!/usr/bin/env bash.
3. Новый алиас не работает в текущем терминале.
Алиасы из ~/.bashrc применяются после source ~/.bashrc или открытия новой интерактивной оболочки. В неинтерактивных скриптах алиасы по умолчанию не раскрываются.
4. Скрипт не запускается с сообщением Permission denied.
Выдайте файлу право на выполнение командой chmod +x script.sh и запустите его через ./script.sh.
Итог
В рабочей среде bash должен быть предсказуемым: версии зафиксированы, изменения проходят проверку, резервные копии существуют, а сбои видны в мониторинге. Чек-лист выше — минимальная отправная точка.