Коротко о главном
Bash остаётся оболочкой по умолчанию в большинстве серверных и десктопных дистрибутивов Linux. Она нужна администраторам, разработчикам и всем, кто выполняет команды в терминале. В статье разберём базовую настройку, работу с историей, алиасами, функциями и безопасными скриптами. Примеры подходят для Debian, Ubuntu, Fedora и Arch.
Правильно настроенный Bash ускоряет повседневную работу и уменьшает число ошибок. История с поиском, автодополнение и короткие функции избавляют от повторного ввода длинных команд. Понимание Bash помогает читать чужие скрипты и писать переносимую автоматизацию. Это навык, который используется почти в каждой задаче на Linux.
Большинство проблем с bash сводится к нескольким повторяющимся ошибкам. Ниже — что проверить в первую очередь и как не усугубить ситуацию.
Почему это происходит
Ошибки почти всегда связаны с контекстом: другая версия пакета, не тот пользователь, устаревший конфиг или команда из руководства для другой системы. bash не исключение. Поэтому сначала фиксируем исходное состояние, затем меняем одну вещь за раз.
Типичные ошибки
Ниже — сбои, которые встречаются чаще всего. Перед исправлением сохраните текущие конфиги и запишите, какие изменения вносите: так проще откатиться.
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.
Как настроить правильно
Правильная последовательность проста: проверить версию и зависимости, сделать резервную копию конфигурации, внести минимальное изменение, проверить логи и только потом двигаться дальше.
Установка
В 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"; }
Рабочий конфиг
Начните с минимального рабочего варианта. Не копируйте большой конфиг целиком: добавляйте параметры по одному и проверяйте результат после каждого изменения.
# ~/.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 в критичных скриптах, но проверяйте места, где ненулевой код возврата ожидаем.
Профилактика
Большинство повторяющихся сбоев с bash связано не с ошибкой в самой программе, а с окружением: обновились зависимости, изменился путь, закончилось место или другой администратор поправил конфиг. Поэтому профилактика начинается с фиксации исходного состояния.
Сохраните рабочий конфиг в систему контроля версий, добавьте короткий комментарий о том, зачем нужен каждый нестандартный параметр, и запишите команду проверки. Через месяц вы скажете себе спасибо: восстановить логику по чужому файлу без пояснений почти невозможно.
Чек-лист
- Версия пакета и конфигурация зафиксированы и доступны для сравнения.
- Есть автоматическая проверка синтаксиса перед перезапуском службы.
- Журналы ротуются, а диск не заполняется ими за неделю.
- Изменения проходят через тестовый стенд, а не сразу на рабочий сервер.
Итог
Большинство ошибок с bash лечится не переустановкой, а проверкой конфигурации, логов и прав доступа. Действуйте по одному изменению за раз — и причина быстро найдётся.