Узнать, что будет выполнено
Посмотри все определения имени. При отличии от примера сначала выясни, не переопределена ли команда.
Интерпретатор команд: интерактивный ввод, встроенные команды и запуск сценариев.
bash --version
версия оболочки
help
встроенная справка
type pwd
тип команды
help pwd
справка команды
set -o
режимы оболочки
history
история сессии
bash — оболочка: программа, разбирающая командный язык и организующая выполнение
команд. Терминал передаёт ввод и отображает вывод; Bash решает, как выполнить
введённую строку. Описание сценариев вынесено в bash-scripting.
Команда может быть встроенной, функцией, псевдонимом или внешней программой.
Поэтому наличие файла с похожим именем ещё не доказывает, что будет запущен именно
он. Для проверки используй type. Встроенная cd изменяет каталог текущей оболочки;
каталог отдельного процесса не меняет каталог родительской сессии.
Различай ключи запуска 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 |
Ничего не найдено. Попробуй запрос короче.
Посмотри все определения имени. При отличии от примера сначала выясни, не переопределена ли команда.
Список set -o показывает состояния режимов, включая emacs и vi. Сочетания из вводного урока рассчитаны на emacs.
В режиме 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 сам по себе не устанавливает отсутствующую программу.
Уточни тип сессии и выбранный файл запуска. Не выполняй source для непроверенного файла только ради диагностики.
История связана с конкретной оболочкой и её настройками. Проверь её состояние; вывод переменных не восполняет отсутствующие записи. Не публикуй историю целиком: в ней могут быть секреты.
Опасно. Текст после
bash -cи содержимое файла при source исполняются, а не просто читаются.bash -nпроверяет синтаксис, но не безопасность сценария. Не включай трассировку секретных команд в общие журналы. Не описывай set -euo pipefail как гарантию корректности: поведение зависит от контекста, а ошибки требуют явной обработки.
bash-scripting — переменные, условия и сценарии.
env-vars — окружение и PATH.
man-help — поиск подходящей справки.
pwd — каталог текущей оболочки.
files-basics — терминал и базовые действия.
command-syntax — как оболочка делит строку на команду, ключи и аргументы.
redirection — перенаправление вывода и конвейеры.
Есть неточность? Сообщить об ошибке в статье