С чего начать Первые шаги трек · 15 ступеней
Linux Labs

bash — командная оболочка

5 мин Ubuntu 24.04; Bash 5.2.21

Интерпретатор команд: интерактивный ввод, встроенные команды и запуск сценариев.

Шпаргалка

6 команд Версия для печати
  • bash --version версия оболочки
  • help встроенная справка
  • type pwd тип команды
  • help pwd справка команды
  • set -o режимы оболочки
  • history история сессии

Обзор

bash — оболочка: программа, разбирающая командный язык и организующая выполнение команд. Терминал передаёт ввод и отображает вывод; Bash решает, как выполнить введённую строку. Описание сценариев вынесено в bash-scripting.

Команда может быть встроенной, функцией, псевдонимом или внешней программой. Поэтому наличие файла с похожим именем ещё не доказывает, что будет запущен именно он. Для проверки используй type. Встроенная cd изменяет каталог текущей оболочки; каталог отдельного процесса не меняет каталог родительской сессии.

Ключи

9

Различай ключи запуска bash, параметры set и параметры shopt: это разные интерфейсы, а не один плоский список ключей. bash script.sh запускает сценарий в другой оболочке. source script.sh выполняет его в текущей и может изменить её переменные и каталог.

Для просмотра параметров оболочки используй set -o, для дополнительных переключателей — shopt. Это диагностические вызовы без изменения режима. Не переноси настройки из чужого примера, пока не выяснишь, к какой оболочке они должны применяться.

Ключ Что делает Пример
-c command Выполнить command как строку и выйти, не читая файл сценария. bash -c 'echo hi'
-x Печатать каждую команду перед выполнением (трассировка, xtrace). bash -x script.sh
-e Прервать сценарий при первой команде с ненулевым кодом возврата (то же, что set -e). bash -e script.sh
-i Запустить интерактивную оболочку, даже если ввод не терминал. bash -i
-l --login Вести себя как login-оболочка (читать системный profile и один из пользовательских). bash -l
-n Только проверить синтаксис сценария, не выполняя его. bash -n script.sh
--noprofile Не читать системный и пользовательский profile для login-оболочки. bash --noprofile
--norc Не читать ~/.bashrc для интерактивной non-login оболочки. bash --norc
--version Показать версию bash и выйти. bash --version

Ничего не найдено. Попробуй запрос короче.

Рецепты

4

Узнать, что будет выполнено

Посмотри все определения имени. При отличии от примера сначала выясни, не переопределена ли команда.

bash
type -a pwd
help pwd

Проверить режим редактирования

Список set -o показывает состояния режимов, включая emacs и vi. Сочетания из вводного урока рассчитаны на emacs.

bash
set -o

Править командную строку клавишами

В режиме emacs (он включён по умолчанию) строку до Enter правят сочетаниями:

Сочетание Что делает
Ctrl+A / Ctrl+E курсор в начало / в конец строки
Alt+B / Alt+F на слово назад / вперёд
Alt+Backspace стереть слово перед курсором
Ctrl+U стереть всё перед курсором
Ctrl+K стереть всё от курсора до конца строки
Ctrl+Y вставить последнее стёртое
Ctrl+R поиск по истории команд
Ctrl+L очистить экран

Стёртое через Alt+Backspace, Ctrl+U и Ctrl+K не пропадает: Ctrl+Y вставит его в позицию курсора. Так переставляют кусок команды: Ctrl+U, затем правка, затем Ctrl+Y.

В терминале в браузере Ctrl+W закрывает вкладку, поэтому слово стирай Alt+Backspace. Если Alt+B или Alt+F печатают символ вместо перехода (так бывает на macOS), двигайся стрелками.

Разобраться с файлами запуска

Интерактивная non-login оболочка читает ~/.bashrc. Login-оболочка читает системный profile и первый доступный пользовательский профиль: ~/.bash_profile, ~/.bash_login или ~/.profile. Эти режимы независимы от запуска через конкретную кнопку терминала. В Ubuntu учитывай также системную конфигурацию.

bash
shopt login_shell
printf "%s\n" "$-"

Неполадки

3

command not found

Проверь написание и поиск команды. Запуск новой Bash сам по себе не устанавливает отсутствующую программу.

bash
type whoami
printf "%s\n" "$PATH"

Настройка есть в файле, но не действует

Уточни тип сессии и выбранный файл запуска. Не выполняй source для непроверенного файла только ради диагностики.

bash
shopt login_shell
printf "%s\n" "$-"

История пуста или отличается между окнами

История связана с конкретной оболочкой и её настройками. Проверь её состояние; вывод переменных не восполняет отсутствующие записи. Не публикуй историю целиком: в ней могут быть секреты.

bash
set -o
printf "%s\n" "${HISTSIZE-unset}"

Опасно

Опасно. Текст после bash -c и содержимое файла при source исполняются, а не просто читаются. bash -n проверяет синтаксис, но не безопасность сценария. Не включай трассировку секретных команд в общие журналы. Не описывай set -euo pipefail как гарантию корректности: поведение зависит от контекста, а ошибки требуют явной обработки.

Термины

3
терминал terminal
Интерфейс ввода и вывода для текстовых программ. Командный язык разбирает оболочка. Ещё встречается в: Переменные окружения и PATH, mc, ps, Локаль и кодировка и ещё 52
Readline
Библиотека редактирования командной строки; в Bash обеспечивает историю и сочетания клавиш.
оболочка (shell)
Интерпретатор команд: читает командную строку, раскрывает переменные и шаблоны, запускает процессы. Интерактивная оболочка по умолчанию во многих дистрибутивах — Bash. Ещё встречается в: hash, nologin, Как устроена команда, ansible-playbook: запуск плейбука и ещё 57

См. также

  • bash-scripting — переменные, условия и сценарии.

  • env-vars — окружение и PATH.

  • man-help — поиск подходящей справки.

  • pwd — каталог текущей оболочки.

  • files-basics — терминал и базовые действия.

  • command-syntax — как оболочка делит строку на команду, ключи и аргументы.

  • redirection — перенаправление вывода и конвейеры.

Загрузка…