Provided by: manpages-uk_4.24.0-2_all bug

НАЗВА

       bash — GNU Bourne-Again SHell

КОРОТКИЙ ОПИС

       bash [параметри] [рядок_команди | файл]

АВТОРСЬКІ ПРАВА

       Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc.

ОПИС

       Bash  є  сумісним  із  sh  інтерпретатором  мови  командного  рядка, який виконує команди,
       прочитані зі стандартного джерела вхідних даних або з  файла.  У  Bash  також  реалізовано
       корисні можливості оболонок Korn і C (ksh і csh).

       Bash  створено  як  сумісну  реалізацію  розділів  щодо  оболонки  та  допоміжних  програм
       специфікації IEEE  POSIX  (стандарту  IEEE  1003.1).  Bash  можна  типово  налаштувати  на
       сумісність із POSIX.

ПАРАМЕТРИ

       Усіма  односимвольними  параметрами оболонки, які документовано в описі вбудованої команди
       set, зокрема -o, можна скористатися як параметрами під час виклику  оболонки.  Крім  того,
       під час виклику bash виконує обробку таких параметрів:

       -c        Якщо  вказано параметр -c, команди буде прочитано з першого аргументу, який не є
                 параметром, рядок_команди.  Якщо  після  аргументу  рядок_команди  вказано  інші
                 аргументи,  перший  аргумент  буде  пов'язано  із  $0,  а усі інші аргументи — з
                 наступними позиційними параметрами. Прив'язка до $0 встановлює  назву  оболонки,
                 яку  буде  використано  у  повідомленнях  із попередженнями та повідомленнях про
                 помилки.
       -i        Якщо вказано параметр -i, оболонка є інтерактивною.
       -l        Наказує bash працювати так, наче програму викликано як  оболонку  для  входу  до
                 системи (див.  ВИКЛИК нижче).
       -r        Якщо  вказано  параметр  -r,  оболонка  стає  обмеженою (див.  ОБМЕЖЕНА ОБОЛОНКА
                 нижче).
       -s        Якщо вказано параметр -s або якщо після  обробки  параметрів  не  буде  виявлено
                 аргументів,  команди  буде  прочитано  зі стандартного джерела вхідних даних. За
                 допомогою цього параметра можна встановлювати позиційні  параметри  при  виклику
                 інтерактивної  оболонки  або  при  читанні  вхідних  даних за допомогою конвеєра
                 команд.
       -v        Друкувати входові рядки оболонки під час виконання.
       -x        Виводити команди та їхні аргументи при їхньому виконанні.
       -D        Список усіх рядків у подвійних лапках, яким передуватиме  $,  буде  виведено  до
                 стандартного  виведення.  Це  рядки,  які підлягатимуть перекладу, якщо поточною
                 локаллю не є C або POSIX. Неявним чином  буде  також  застосовано  параметр  -n.
                 Команди оболонки не виконуватимуться.
       [-+]O [параметр_оболонки]
                 параметр_оболонки  є  одним з параметрів оболонки, який приймає вбудований засіб
                 shopt (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче). Якщо вказано  параметр_оболонки,
                 -O   встановлює   значення  цього  параметра;  +O  скасовує  встановлення.  Якщо
                 параметр_оболонки не вказано, до стандартного виведення буде  виведено  назви  і
                 значення  параметрів  оболонки, які приймаються shopt. Якщо параметром виклику є
                 +O, виведення буде показано у форматі, який може бути  повторно  використано  як
                 вхідні дані програми.
       --        --  вказує  на  завершення  параметрів  і  вимикає  подальшу обробку параметрів.
                 Будь-які аргументи після  --  оброблятимуться  як  назви  файлів  та  аргументи.
                 Аргумент - є еквівалентним до --.

       Крім  того,  bash  обробляє  декілька  багатосимвольних  параметрів. Ці параметри має бути
       вказано у командному рядку до односимвольних параметрів, щоб їх було розпізнано.

       --debugger
              Налаштовування для профілю  засобу  діагностики,  який  слід  виконати  до  запуску
              оболонки.  Вмикає  розширений  режим  діагностики  (див.  опис  параметра  extdebug
              вбудованого засобу shopt нижче).
       --dump-po-strings
              Еквівалент -D, але виведення  відбуватиметься  у  форматі  файлів  GNU  gettext  po
              (портативного об'єкта).
       --dump-strings
              Те саме, що і -D.
       --help Вивести повідомлення щодо користування до стандартного виведення і завершити роботу
              програми зі станом «успіх».
       --init-file файл
       --rcfile файл
              Виконати команди  з  файла  файл  замість  загальносистемного  файла  ініціалізації
              /etc/bash.bashrc  та  стандартного  особистого  файла ініціалізації ~/.bashrc, якщо
              оболонка є інтерактивною (див.  ВИКЛИК нижче).

       --login
              Еквівалент -l.

       --noediting
              Не використовувати бібліотеку GNU readline для читання рядків команд, якщо оболонка
              є інтерактивною.

       --noprofile
              Не  читати  або  загальносистемний  файл запуску /etc/profile або будь-які особисті
              файли ініціалізації ~/.bash_profile, ~/.bash_login  або  ~/.profile.  Типово,  bash
              читає ці файли при виклику у режимі оболонки входу до системи (див.  ВИКЛИК нижче).

       --norc Не  читати і не виконувати загальносистемний файл ініціалізації /etc/bash.bashrc та
              особистий файл ініціалізації ~/.bashrc, якщо оболонка є інтерактивною. Типово,  цей
              параметр буде використано, якщо оболонку викликано за допомогою команди sh.

       --posix
              Змінити  поведінку  bash  там, де типові дії відрізняються від стандарту POSIX так,
              щоб відповідати стандарту (режим posix). Див. розділ ТАКОЖ ПЕРЕГЛЯНЬТЕ, де наведено
              посилання на документ із подробицями щодо того, як режим posix впливає на поведінку
              bash.

       --restricted
              Оболонка стає обмеженою (див.  ОБМЕЖЕНА ОБОЛОНКА нижче).

       --verbose
              Еквівалент -v.

       --version
              Вивести дані  щодо  версії  цього  екземпляра  bash  до  стандартного  виведення  і
              завершити роботу зі станом виходу «успіх».

АРГУМЕНТИ

       Якщо після обробки параметрів у рядку команди лишаться аргументи, і не вказано ні параметр
       -c, ні параметр -s, перший аргумент буде оброблено як назву файла,  у  якому  зберігаються
       команди  оболонки.  Якщо  bash  викликано у такий спосіб, для $0 буде встановлено значення
       назви цього файла, а решту аргументів буде розподілено між іншими позиційними  параметрами
       послідовно.  Bash прочитає і виконає команди із вказаного файла, а потім завершить роботу.
       Кодом стану виходу bash буде код стану виходу останньої виконаної у скрипті команди.  Якщо
       не  буде  виконано  жодної команди, кодом стану виходу буде 0. Спершу буде виконано спробу
       відкрити файл у поточному каталозі. Якщо  файла  із  вказаною  назвою  не  буде  знайдено,
       оболонка виконає пошук файла скрипту у каталогах змінної середовища PATH.

ВИКЛИК

       A  login shell є той, чий перший символ нульового аргументу є -, або той, що починається з
       параметра --login.

       Інтерактивною є оболонка, яку запущено без аргументів, які  не  є  аргументами  параметрів
       (якщо не вказано параметр -s), і без параметра -c, чиї стандартні джерело вхідних даних та
       виведення помилок з'єднано з терміналами (як це визначено isatty(3)),  або  оболонка,  яку
       запущено  з  параметром -i. Якщо bash є інтерактивною, встановлюється PS1, а $- включає i,
       що надає змогу скрипту оболонки або файлу запуску перевіряти відповідний стан.

       Нижче наведено опис того, як bash виконує свої файли запуску.  Якщо  існує  якийсь  з  цих
       файлів,  але  його  не  можна  прочитати,  bash  повідомляє  про помилку. Записи з тильдою
       розгортаються до назв файлів, як це описано  нижче  у  підрозділі  Розгортання  з  тильдою
       розділу РОЗГОРТАННЯ.

       Якщо  bash  викликано  як  інтерактивну  оболонку  для входу до системи або неінтерактивну
       оболонку  із  параметром  --login,  програма  спершу  читає  і  виконує  команди  з  файла
       /etc/profile,  якщо  такий  файл  існує.  Після  читання  цього  файла, відбувається пошук
       ~/.bash_profile, ~/.bash_login та ~/.profile, саме у цьому порядку.  Програма  прочитає  і
       виконає  команди з першого з цих файлів, який існує і придатний до читання. Для придушення
       такої поведінки можна при запуску оболонки скористатися параметром --noprofile.

       При  виході  з  інтерактивної  оболонки  для  входу  до  системи  або  при   виконанні   у
       неінтерактивній  оболонці  вбудованої  команди  exit, bash читає і виконує команди з файла
       ~/.bash_logout, якщо такий існує.

       Коли запущено інтерактивну оболонку, що не є оболонкою входу в  систему,  bash  зчитує  та
       виконує  команди  з  /etc/bash.bashrc  і  ~/.bashrc,  якщо  ці  файли  існують.  Це  можна
       заблокувати опцією --norc. Використання параметра --rcfile файл  змусить  bash  читати  та
       виконувати команди з файлe замість /etc/bash.bashrc та ~/.bashrc.

       Коли  bash  запущено  неінтерактивно, щоб запустити скрипт оболонки, наприклад, воно шукає
       змінну BASH_ENV у оточенні, якщо знаходить,  то  розкриває  її  значення,  і  використовує
       розкрите  значення, як назву файлу, який треба прочитати і виконати. Bash поводиться, ніби
       виконують наступну команду:
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       але значення змінної PATH не використовується для пошуку назви файлу.

       Якщо bash викликано за  назвою  sh,  програма  намагатиметься  якомога  точніше  імітувати
       поведінку  після  запуску  давніх  версій  sh,  не  відхиляючись від стандарту POSIX. Якщо
       програму викликано як інтерактивну оболонку  або  неінтерактивну  оболонку  із  параметром
       --login,  програма  намагатиметься  прочитати  і виконати команди з файлів /etc/profile та
       ~/.profile, саме у такому порядку. Для  успадкування  такої  поведінки  можна  використати
       параметр  --noprofile.  Якщо  програму викликано як інтерактивну оболонку із використанням
       назви sh, bash шукатиме на змінну ENV, розгортатиме її значення, якщо  його  визначено,  і
       використовуватиме розгорнуте значення як назву файла для читання і виконання. Оскільки при
       виклику оболонки за назвою sh не намагатиметься прочитати і виконати  команд  з  будь-яких
       інших  файлів  запуску,  параметр  --rcfile  не  працюватиме. Неінтерактивна оболонка, яку
       викликано за назвою sh, не намагатиметься  прочитати  будь-які  інші  файли  запуску.  При
       виклику за назвою sh, bash входить у режим posix після читання файлів запуску.

       Якщо  bash  запущено  у  режимі  posix або з параметром командного рядка --posix, програма
       виконуватиме усі настанови стандарту POSIX для файлів запуску. У цьому режимі інтерактивні
       оболонки  розгортатимуть  змінну  ENV,  читатимуть і виконуватимуть команди з файла, назва
       якого визначається розгорнутим  значенням.  Читання  будь-яких  інших  файлів  запуску  не
       виконуватиметься.

       Bash  спробує  визначити, чи запущено програму зі стандартним джерелом введення даних, яке
       з'єднано із з'єднанням мережі, зокрема, коли програму  запущено  давньою  фоновою  службою
       віддаленої оболонки, зазвичай rshd, або фоновою службою безпечної оболонки sshd. Якщо bash
       визначає, що програму запущено неінтерактивно у такий спосіб,  програма  читає  і  виконує
       команди  з  /etc/bash.bashrc і ~/.bashrc, якщо ці файли існують і є придатними до читання.
       Програма не робитиме цього, якщо її викликано з використанням назви sh. Щоб успадкувати цю
       поведінку, можна скористатися параметром --norc, а параметром --rcfile можна скористатися,
       щоб наказати програмі прочитати інший файл, але ні rshd, ні  sshd  загалом  не  викликають
       оболонку з такими параметрами і не дозволяють вказувати ці параметри.

       Якщо  оболонку  запущено  із  використанням ідентифікатора ефективного користувача (групи)
       рівного ідентифікатору справжнього користувача (групи), і не вказано параметр -p, програма
       не  читатиме  жодних файлів запуску, функції оболонки не успадковуватимуться з середовища,
       змінні SHELLOPTS, BASHOPTS, CDPATH та GLOBIGNORE, якщо їх використано у  середовищі,  буде
       проігноровано,  а  для  ідентифікатора  ефективного  користувача буде встановлено значення
       ідентифікатора справжнього користувача. Якщо при виклику  буде  використано  параметр  -p,
       поведінка при запуску буде тією самою, але значення ідентифікатора ефективного користувача
       не скидатиметься.

ОЗНАЧЕННЯ

       У решті цього документа використано наведені нижче визначення.
       пропуск
              Пробіл або табуляція.
       слово  Послідовність символів, яка обробляється оболонкою як єдиний модуль.  Також  відома
              як жетон.
       назва  A  слово, що містить лише алфавітно-цифрові символи та підкреслення, та починається
              з букви або підкреслення. Також, на якого посилаються, як identifier.
       метасимвол
              Символ, який, якщо не брати його у лапки, відокремлює слова.  Таким  символом  може
              бути:
              |  & ; ( ) < > space tab newline
       оператор керування
              Жетон, який виконує контрольну функцію. Один з таких символів:
              || & && ; ;; ;& ;;& ( ) | |& <newline>

ЗАРЕЗЕРВОВАНІ СЛОВА

       Зарезервовані слова — слова, які мають особливе значення для оболонки. Вказані нижче слова
       буде розпізнано як зарезервовані слова, якщо їх не було  нейтралізовано,  і  якщо  вони  є
       першим  словом  команди  (див.   ГРАМАТИКА ОБОЛОНКИ нижче), третім словом команди case або
       select (коректним є лише in) або третім словом команди for (коректними є лише in і do):

       ! case  coproc  do done elif else esac fi for function if in select then until while  {  }
       time [[ ]]

ГРАМАТИКА ОБОЛОНКИ

       У цьому розділі описано синтаксис різних форм команд оболонки.

   Прості команди
       Простою  командою є послідовність надання значень змінним, після якої вказано відокремлені
       пропусками слова і переспрямування і яка завершується оператором  керування.  Перше  слово
       визначає  команду,  яку  буде  виконано, її буде передано як нульовий аргумент. Решту слів
       буде передано як аргументи команди, яку викликано.

       Повернутим значенням простої команди є її код стану виходу або 128+n,  якщо  команду  було
       перервано із використанням сигналу n.

   Конвеєри
       Конвеєр  є  послідовністю  однією або декількох команд, які відокремлено одним із керівних
       операторів | або |&. Формат конвеєра є таким:

              [time [-p]] [ ! ] команда1 [ [||&] команда2 ... ]

       Стандартне виведення команди команда1 з'єднується каналом зі стандартним введенням команди
       команда2.  Це  з'єднання  виконується  до будь-яких переспрямувань, які визначено командою
       (див.  ПЕРЕСПРЯМУВАННЯ нижче). Якщо використано |&, стандартне виведення  помилок  команди
       команда1,  на  додачу  до  її  стандартного  виведення,  з'єднано зі стандартним введенням
       команди  команда2  каналом;  це  скорочення  від  2>&1  |.  Це  неявне   переспрямовування
       стандартного  виведення  помилок  до  стандартного  виведення  виконується після будь-яких
       переспрямувань, які визначаються командою команда1.

       Кодом стану повернення конвеєра є код стану виходу  останньої  команди,  якщо  не  вказано
       параметр  pipefail.  Якщо  увімкнено  pipefail, кодом стану повернення конвеєра є значення
       останньої (найправішої) команди, яка завершила роботу із ненульовим кодом стану, або нуль,
       якщо  усі  команди було виконано успішно. Якщо перед конвеєром вказано зарезервоване слово
       !, кодом стану виходу конвеєра є логічне заперечення коду стану виходу, який описано вище.
       Оболонка  очікує  на  завершення  виконання  усіх  команд  у  конвеєрі, перш ніж повернути
       значення.

       Якщо перед конвеєром вказано зарезервоване слово time, після завершення виконання конвеєра
       буде  виведено  звіт  щодо  часу  спожитого  під  час виконання у просторі користувача і у
       просторі системи. Параметр -p змінює формат виведення на такий, який визначено POSIX. Якщо
       оболонка  працює  у  режимі  posix,  вона  не  розпізнає time як зарезервоване слово, якщо
       наступний жетон починається з «-». Можна  встановити  для  змінної  середовища  TIMEFORMAT
       значення  рядка  форматування,  який  визначає  спосіб  показу  даних щодо часу; див. опис
       TIMEFORMAT у розділі Змінні оболонки нижче.

       Якщо оболонка перебуває у режимі posix, після time можна додати символ  розриву  рядка.  У
       цьому  випадку оболонка показуватиме загальний час, який спожито у просторах користувача і
       системи оболонкою та її дочірніми процесами. Змінною  TIMEFORMAT  можна  скористатися  для
       визначення форматування даних щодо часу.

       Кожна  команда у багатокомандному конвеєрі, де створено канали, виконується у підоболонці,
       яка є окремим процес. Див.   СЕРЕДОВИЩЕ  ВИКОНАННЯ  КОМАНД,  щоб  ознайомитися  із  описом
       підоболонок  і  середовища  підкоманд.  Якщо  використано  параметр  lastpipe за допомогою
       вбудованого запису shopt (див. опис shopt нижче),  останній  елемент  конвеєра  може  бути
       виконано процесом оболонки, якщо керування завданнями не є активним.

   Списки
       Список  є  послідовністю  одного  або декількох конвеєрів команд, які відокремлено одним з
       операторів ;, &, && або ||, і, якщо  потрібно,  завершено  одним  із  символів  ;,  &  або
       <розривом рядка>.

       З цих операторів списку && і || мають однакову пріоритетність. Нижчу за них пріоритетність
       мають ; і &, які теж мають однакову пріоритетність.

       У списку може бути використано послідовність з одного або декількох символів нового  рядка
       замість крапки з комою для відокремлення команд.

       Якщо  команда  завершується  оператором  керування  &, оболонка виконує команду у фоновому
       режимі у підоболонці. Оболонка не чекатиме на завершення виконання  такої  команди,  кодом
       стану  повернення  завжди  буде 0. Такі команди будемо називати асинхронними. Команди, які
       відокремлено символом ;, буде  виконано  послідовно.  Оболонка  очікуватиме  на  виконання
       кожної  команди,  перш  ніж  перейти  до  наступної. Кодом стану повернення буде код стану
       повернення останньої виконаної команди.

       Списки І  та  АБО  є  послідовностями  одного  або  більше  каналів  розділених  керуючими
       операторами  &&  та  ||  відповідно.  Списки  І та АБО виконуються з лівою асоціативністю.
       Список І має форму

              команда1 && команда2

       команду2 буде виконано лише  тоді,  якщо  команда1  повертає  нульовий  код  стану  виходу
       (успіх).

       Список OR має форму

              команда1 || команда2

       Команду команда2 буде виконано тоді і лише тоді, коли команда команда1 повертає ненульовий
       код стану виходу. Кодом стану повернення списків AND і OR є  код  стану  виходу  останньої
       виконаної команди у списку.

   Складені команди
        Складена  команда  є  однією з описаних нижче команд. У більшості випадків список в описі
       команди може відокремлюватися від решти команди  одним  або  кількома  новими  рядками,  а
       замість крапки з комою може слідувати новий рядок.

       (список)
              Список  виконується  у  підоболонки (дивіться СЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД нижче, де
              наведено опис середовища підоболонки). Присвоєння змінних і вбудовані команди,  які
              впливають  на  середовище  оболонки, не залишаються в силі після виконання команди.
              Статус повернення — це стан виходу списку команд список.

       { список; }
              список  просто  виконується  в  поточному  середовищі  оболонки.   Список   повинен
              завершуватися  новим  рядком або крапкою з комою. Це називається груповою командою.
              Стан повернення — це стан виходу  списку  команд  список.  Зверніть  увагу,  що  на
              відміну від метасимволів ( та ), { та } є зарезервованими словами і має відбуватися
              там, де дозволено розпізнавати зарезервоване слово.  Оскільки  вони  не  викликають
              розриву  слова,  вони  повинні  відділятися  від списку команд список пробілами або
              іншими метасимволами оболонки.

       ((вираз))
              вираз обчислюється згідно правил описаних нижче під  АРИФМЕТИЧНІ  ОБЧИСЛЕННЯ.  Якщо
              значення виразу не нуль, повертається стан 0; в іншому випадку повертається стан 1.
              Для аргументу вираз буде виконано такі самі розгортання, які було б виконано,  якби
              його  було  взято  у подвійні лапки, але символи подвійних лапок у самому аргументі
              вираз не буде оброблено особливим чином і буде просто вилучено.

       [[ вираз ]]
              Повертає стан 0 або 1 залежно від оцінки умовного виразу вираз. Вирази  складаються
              з первинних частин, описаних нижче у розділі УМОВНІ ВИРАЗИ. Для слів між [[ і ]] не
              буде виконано поділ на слова та розгортання шляхів.  Оболонка  виконає  розгортання
              тильди,  розширення  параметрів  і  змінних,  арифметичне  розширення, підставляння
              команд, підставляння процесу та вилучення лапок для цих слів (розгортання, яке було
              б  виконано,  якщо  б слова було взято у подвійні лапки). Умовні оператори, такі як
              -f, повинні бути без лапок, щоб бути визнаними основними.

              Якщо використано  [[,  оператори  <  і  >  лексикографічно  упорядковуватимуться  з
              використанням порядку поточної локалі.

       Див.  опис  вбудованої  команди  test  (розділ  «ВБУДОВАНІ  КОМАНДИ  ОБОЛОНКИ» нижче), щоб
       дізнатися більше про обробку параметрів (тобто про пропущені параметри).

       Коли використовуються оператори == і !=, рядок праворуч від оператора вважається взірцем і
       відповідає  правилам,  описаним  нижче  в  розділі  Відповідність  за  взірцем,  ніби було
       увімкнено параметр оболонки extglob. Оператор = еквівалентний ==. Якщо увімкнено  параметр
       оболонки  nocasematch, пошук збігів виконується без урахування регістру символів алфавіту.
       Буде повернуто значення 0, якщо рядок відповідає (==) або не відповідає (!=) взірцю, і 1 в
       іншому   випадку.   Будь-яку  частину  взірця  можна  брати  у  лапками  для  встановлення
       відповідності цій частині, як рядку.

       Доступним є додатковий двійковий оператор, =~, із тим самим рівнем пріоритетності, що і as
       ==  and  !=.  Якщо  ним  скористатися,  рядок  праворуч  від  оператора  буде оброблено як
       розширений формальний вираз POSIX і встановлено відповідність  (за  допомогою  інтерфейсів
       POSIX regcomp і regexec, які зазвичай описано у regex(3)). Буде повернуто значення 0, якщо
       рядок збігається із взірцем, і 1 в іншому випадку. Якщо  формальний  вираз  є  синтаксично
       помилковим,  повернутим значенням умовного виразу буде 2. Якщо увімкнено параметр оболонки
       nocasematch, відповідність встановлюватиметься без врахування  регістру  символів  абетки.
       Будь-яку  частину  взірця  можна взяти у лапки, якщо відповідність цієї частини рядка слід
       встановлювати буквально. Це означає, що будь-який символ у  нейтралізованій  частині  буде
       використано  як  є,  а  не  з  врахуванням відповідності спеціальному взірцю. Якщо взірець
       зберігається у  змінній  оболонки,  нейтралізація  розгортання  змінної  встановлює  режим
       примусового  встановлення  відповідності за взірцем як звичайним рядком. Будьте обережними
       із виразами у квадратних дужках у формальних виразах, оскільки  звичайна  нейтралізація  і
       символи взірців втрачають значення у квадратних дужках.

       Взірець  вважатиметься відповідним, якщо він відповідає будь-якій частині рядка. Для того,
       щоб відповідність  було  зареєстровано,  лише  якщо  взірець  збігається  з  усім  рядком,
       скористайтеся  прив'язками  ^ і $. У змінній-масиві BASH_REMATCH зберігається запис частин
       рядка, які відповідають взірцю. Елемент  BASH_REMATCH  з  індексом  0  частину  рядка  яка
       відповідає усьому формальному виразу. Підрядки, які відповідають взятим у дужки підвиразам
       у формальному виразі, зберігаються у решті  індексованих  елементів  масиву  BASH_REMATCH.
       Елемент  BASH_REMATCH  із  індексом n ж частиною рядка, що відповідає взятому у дужки n-му
       підвиразу. Bash встановлює BASH_REMATCH у загальній області видимості;  оголошення  її  як
       локальної змінної призведе до неочікуваних результатів.

       Вираз  можна  поєднувати  за  допомогою  вказаних  нижче  операторів,  які упорядковано за
       спаданням пріоритетності:

              ( вираз )
                     Повертає значення виразу вираз. Цим можна  скористатися  для  перевизначення
                     звичайної пріоритетності операторів.
              ! вираз
                     True, якщо вираз має значення false.
              вираз1 && вираз2
                     True, якщо обидва, вираз1 і вираз2, мають значення true.
              вираз1 || вираз2
                     True, якщо вираз1 або вираз2 має значення true.

              При  використанні  операторів  && і || значення виразу вираз2 не обчислюватиметься,
              якщо значення виразу вираз1 достатньо для визначення  повернутого  значення  усього
              виразу умови.

       for назва [ [ in [ слово ... ] ] ; ] do список ; done
              Список  слів, за яким вказано in, розгортається у список записів. Для змінної назва
              встановлюється значення кожного з  елементів  списку  за  чергою,  і  кожного  разу
              виконується  список.  Якщо  пропущено слово in, команда for виконає список для усіх
              встановлених позиційних параметрів (див.  ПАРАМЕТРИ нижче).  Повернутий  код  стану
              буде кодом стану виходу останньої виконаної команди. Якщо розгортання записів за in
              призведе до створення порожнього списку, команди не виконуватимуться, а кодом стану
              повернення буде 0.

       for (( вираз1 ; вираз2 ; вираз3 )) ; do список ; done
              Спочатку,  арифметичний  вираз  вираз1 обчислюється за правилами, описаними нижче у
              розділі  АРИФМЕТИЧНІ  ОБЧИСЛЕННЯ.  Потім,  обчислення  арифметичного  виразу  expr2
              повторюється поки не досягне нуля. Кожного разу, коли результатом обчислення виразу
              вираз2 є нуль, буде виконано список і обчислено  арифметичний  вираз  вираз3.  Якщо
              якогось  виразу  не буде виявлено, вважатиметься, що його значенням є 1. Повернутим
              значенням є стан виходу останньої команди список, яка виконалася, або  false,  якщо
              будь-який вираз є некоректним.

       select назва [ in слово ] ; do список ; done
              Список  слів  після  in  буде  розгорнуто.  Результатом  буде список записів. Набір
              розгорнутих слів буде виведено до стандартного виведення помилок,  перед  кожним  з
              яких  буде  дописано  номер.  Якщо  буде  пропущено  слово  після in, буде виведено
              позиційні параметри (див.  ПАРАМЕТРИ нижче). Після цього select буде показано запит
              PS3  і  прочитано  рядок зі стандартного введення. Якщо рядок складається з номера,
              який відповідає одному зі показаних слів, слову буде надано  значення  назва.  Якщо
              рядок  є  порожнім,  слова і запит буде показано ще раз. Якщо буде прочитано символ
              кінця файла (EOF), виконання команди select завершується із  поверненням  стану  1.
              Будь-яке  інше  прочитане значення призведе до того, що параметру назва буде надано
              порожнє значення (null). Прочитаний рядок буде збережено у  змінній  REPLY.  Список
              команд список буде виконано після кожного вибору варіанта, аж доки не буде виконано
              команду break. Станом виходу select є  стан  виходу  останньої  команди,  яку  буде
              виконано у списку список, або нуль, якщо не буде виконаної жодної команди.

       case слово in [ [(] взірець [ | взірець ] ... ) список ;; ] ... esac
              Команда  case  спочатку  розгортає  слово  і намагається послідовно встановити його
              відповідність  кожному  із  взірців  взірець  за  допомогою   правил   встановлення
              відповідності,  які  описано  у розділі Відповідність за взірцем нижче. Слово слово
              буде розгорнуто із  використанням  розгортання  тильди,  розгортання  параметрів  і
              змінних,  арифметичних обчислень, заміни команд, підставляння процесів та вилучення
              лапок. Кожен із інспектованих взірців  взірець  буде  розгорнуто  із  використанням
              розгортання  тильди,  розгортання  параметрів  і  змінних,  арифметичних обчислень,
              заміни команд, підставляння  процесів  та  вилучення  екранування.  Якщо  увімкнено
              параметр  оболонки  nocasematch,  відповідність  встановлюватиметься без врахування
              регістру символів  абетки.  Якщо  буде  встановлено  відповідність,  буде  виконано
              відповідний  список команд список. Якщо буде використано оператор ;;, після першого
              ж встановлення відповідності взірцю подальші спроби встановлення  відповідності  не
              виконуватимуться.  Якщо  використати ;& замість ;;, виконання продовжуватиметься із
              прив'язкою списку команд список до наступного набору взірців. Якщо використати  ;;&
              замість ;;, оболонка виконає перевірку наступного списку взірців в інструкції, якщо
              такий є, і виконає будь-який пов'язаний із нею  список  команд  список,  якщо  буде
              встановлено  відповідність,  продовжуючи виконання інструкцій варіанта так, наче не
              було встановлено відповідності списку взірців. Станом виходу є нуль, якщо жоден  із
              взірців  не  є  відповідним.  Якщо  якийсь із взірців виявиться відповідним, станом
              виходу буде стан виходу останньої виконаної у списку команд список команди.

       if список; then список; [ elif список; then список; ] ... [ else список; ] fi
              if список виконується. Якщо стан виходу дорівнює нулю — виконується then список.  В
              іншому  випадку  по  черзі  виконується  кожен  elif список, якщо їхній стан виходу
              дорівнює нулю, то виконується  відповідний  then  список  і  команда  завершується.
              Інакше виконується else список, якщо наявний. Станом виходу є стан виходу останньої
              виконаної команди або нуль, якщо умова не перевірялася.

       while список-1; do список-2; done
       until список-1; do список-2; done
              Команда while послідовно виконує список команд список-2,  доки  остання  команда  у
              списку  команд  список-1 повертає нульовий стан виходу. Команда until є аналогічною
              до  команди  while,  але  умова  у  ній  є  оберненою:   список   команд   список-2
              виконуватиметься,  доки  остання  команда  у  списку  команд  список-1  не  поверне
              ненульовий стан виходу. Станом виходу команд while і until є стан виходу  останньої
              виконаної  команди  у списку команд список-2 або нуль, якщо не було виконано жодної
              команди.

   Копроцеси
       Копроцес — команда оболонки, перед якою  вказано  зарезервоване  слово  coproc.  Виконання
       копроцесу  відбувається асинхронно у підоболонці так, наче команду було завершено керівним
       оператором &. При цьому, буде встановлено двобічний канал обміну даними між  оболонкою,  у
       якій виконується копроцес, і копроцесом.

       Синтаксис для копроцесу:

              coproc [НАЗВА] команда [переспрямування]

       Створює  копроцес  із  назвою  НАЗВА. Аргументом команда може бути або проста команда, або
       складена команда (див. вище). Аргументом НАЗВА є назва змінної середовища. Якщо  аргументу
       НАЗВА не вказано, типовою назвою є COPROC.

       Рекомендована форма використання копроцесу:

              coproc НАЗВА { команда [переспрямування]; }

       Ця  форма є рекомендованою, оскільки прості команди призводять до обов'язкового іменування
       копроцесу назвою COPROC, і нею простіше користуватися, вона є повнішою  за  інші  складені
       команди.

       Якщо команда є складеною командою, НАЗВА є необов'язковою. Слово після coproc визначає, чи
       буде слово оброблено як назву змінної: його буде оброблено як запис НАЗВА, якщо  це  не  є
       зарезервованим  словом,  яке  впроваджує складену команду. Якщо аргумент команда є простою
       командою, використовувати аргумент НАЗВА не можна; так зроблено,  щоб  уникнути  плутанини
       між аргументом НАЗВА і першим словом простої команди.

       При  виконанні копроцесу оболонка створює змінну-масив (див. Масиви нижче) із назвою НАЗВА
       у контексті оболонки, з якої відбувається виконання. Стандартне виведення команди  команда
       буде  з'єднано  за допомогою каналу обміну даними із дескриптором файла в оболонці, з якої
       відбувається виконання, і значення цього дескриптора файла буде надано елементу  НАЗВА[0].
       Стандартне  джерело  вхідних  даних  команди  команда буде з'єднано за допомогою каналу із
       дескриптором файла у оболонці, з якої відбувається виконання, а значення цього дескриптора
       файла  буде  надано  елементу  НАЗВА[1]. Канал обміну даними буде встановлено до виконання
       будь-яких  переспрямувань,   які   вказано   командою   (див.    ПЕРЕСПРЯМУВАННЯ   нижче).
       Дескрипторами  файлів  можна  скористатися  як аргументами команд оболонки з використанням
       стандартного розгортання слів. Підоболонки не матимуть  доступу  до  дескрипторів  файлів,
       окрім дескрипторів, які створено для виконання команд та підставляння процесів.

       Доступ  до  ідентифікатора  процесу оболонки, яку викликано для виконання копроцесу, можна
       отримати як значення змінної НАЗВА_PID.  Для  очікування  на  завершення  копроцесу  можна
       скористатися вбудованою командою wait.

       Оскільки  копроцеси  створюються  як  асинхронні  команди,  команда coproc завжди повертає
       успіх. Стан вертання копроцесу є станом виходу команди.

   Визначення функцій оболонки
       Функція оболонки це обʼєкт, що викликається як проста команда і виконує складену команду з
       новим набором позиційних параметрів. Функція оболонки оголошується наступним чином:

       fname () складена_команда [переспрямування]
       function назва_функції [()] складена_команда [переспрямування]
              Ця  команда  визначає функцію із назвою назва_функції. Використання зарезервованого
              слова function є необов'язковим. Якщо вказано зарезервоване слово function,  круглі
              дужки  є необов'язковими. Вмістом функції є складена команда складена_команда (див.
              Складені команди вище). Ця команда, зазвичай, є списком команд між { і }, але  може
              бути будь-якою командою з наведеного вище списку складених команд, якщо використано
              зарезервоване  слово  function,  але  круглі   дужки   не   вказано,   рекомендуємо
              використовувати  фігурні  дужки.  Складену  команду складена_команда буде викликано
              кожного разу, коли як назву простої команди  використано  назва_функції.  У  режимі
              posix  назвв_функції  має  бути  коректною  назвою  оболонки і не може збігатися із
              назвою однієї із спеціальних вбудованих команд  POSIX.  У  типовому  режимі  назвою
              функції  може  бути  будь-яке слово оболонки, що не містить лапок та символу $. Усі
              переспрямування (див.  ПЕРЕСПРЯМУВАННЯ  нижче),  які  вказано  під  час  визначення
              функції, виконуватимуться під час виконання самої функції. Станом виходу визначення
              функції є нуль, якщо не буде виявлено синтаксичних помилок або призначеної лише для
              читання  функції  із  тією самою назвою. При виконанні станом виходу функції є стан
              виходу останньої виконаної команди у її вмісті. (Див.  ФУНКЦІЇ нижче.)

КОМЕНТАРІ

       У неінтерактивній оболонці або у інтерактивній оболонці, у якій вбудованій  команді  shopt
       передано  аргумент  interactive_comments  (див.   ВБУДОВАНІ  КОМАНДИ ОБОЛОНКИ нижче), якщо
       почати слово #, то решту символів у відповідному рядку буде проігноровано. У інтерактивній
       оболонці   без   параметра   interactive_comments   можливості   додавання  коментарів  не
       передбачено. Параметр interactive_comments у інтерактивних оболонках типово увімкнено.

НЕЙТРАЛІЗАЦІЯ

       Нейтралізацію використовують для усування спеціального  призначення  певних  символів  або
       слів  у  командній  оболонці.  Нейтралізацією  можна  скористатися  для  вимикання обробки
       спеціальних символів, для запобігання непотрібному розпізнаванню  зарезервованих  слів  та
       для запобігання розгортанню параметрів.

       Усі  метасимволи  з  наведено  у  розділі  ВИЗНАЧЕННЯ  списку  мають особливе значення для
       оболонки — їх слід нейтралізувати, якщо вони мають бути просто буквальними словами.

       Якщо використано можливості доповнення за журналом команд (див.   ДОПОВНЕННЯ  ЗА  ЖУРНАЛОМ
       нижче),  символ  доповнення  за  журналом, зазвичай !, слід нейтралізувати для запобігання
       доповненню.

       Передбачено три механізми нейтралізації: символ екранування,  одинарні  лапки  і  подвійні
       лапки.

       Символ  зворотної  похилої  риски  без  лапок  (\)  є  символом  екранування. Він зберігає
       буквальне значення наступного за ним символу, окрім  символу  <нового  рядка>.  Якщо  буде
       виявлено  пару  \<новий  рядок>  і  зворотну похилу риску не нейтралізовано символ \<новий
       рядок> буде оброблено як продовження рядка (тобто, його буде  вилучено  з  потоку  вхідних
       даних і, фактично, проігноровано).

       Набір  символів у одинарних лапках зберігає своє буквальне значення для кожного з символів
       у лапках. У межах взятого в одинарні лапки тексту не можна використовувати одинарні лапки,
       навіть якщо їх екрановано символом зворотної похилої риски.

       Набір  символів,  взятий у подвійні лапки, зберігає буквальне значення для усіх символів у
       лапках, окрім символів $, `, \ і, якщо увімкнено доповнення за журналом, !. Якщо  оболонка
       працює  у  режимі  posix, !  не має особливого призначення у подвійних лапках, навіть якщо
       увімкнено доповнення за журналом. Символи $ і `  зберігають  своє  спеціальне  значення  у
       подвійних  лапках.  Символ зворотної похилої риски зберігає своє спеціальне значення, лише
       якщо за ним вказано один з таких символів: $, `, ", \ або <новий рядок>. Символ  подвійних
       лапок  можна  екранувати у взятому у подвійні лапки фрагменті додаванням перед ним символу
       зворотної похилої риски. Якщо увімкнено доповнення за журналом, його буде виконано для  !,
       якщо  цей  символ не екрановано символом зворотної похилої риски. Символ зворотної похилої
       риски перед ! не буде вилучено.

       Спеціальні параметри * і @ зберігають спеціальне  значення  і  у  подвійних  лапках  (див.
       ПАРАМЕТРИ нижче).

       Послідовності  символів  у  формі  $'рядок'  оброблятимуться особливим чином, як особливий
       варіант одинарних лапок. Ці послідовності буде розгорнуто до  рядка  рядок,  а  екрановані
       символом  зворотної похилої риски символи у рядку рядок буде замінено так, як це визначено
       стандартом ANSI C. Екрановані символом зворотної похилої риски  послідовності,  якщо  такі
       буде виявлено, буде декодовано так:
              \a     гудок (дзвінок)
              \b     backspace
              \e
              \E     символ скасування
              \f     подавання бланку
              \n     новий рядок
              \r     повернення каретки
              \t     горизонтальна табуляція
              \v     вертикальна табуляція
              \\     зворотна похила
              \'     одинарна лапка
              \"     подвійна лапка
              \?     знак питання
              \nnn   восьмибітовий  символ,  значенням якого є вісімкове значення nnn (від однієї
                     до трьох вісімкових цифр)
              \xHH   восьмибітовий символ, значенням якого  є  шістнадцяткове  значення  HH  (від
                     однієї до двох шістнадцяткових цифр)
              \uHHHH символ  Unicode  (ISO/IEC  10646),  чиїм значенням є шістнадцяткове значення
                     HHHH (від однієї до чотирьох шістнадцяткових цифр)
              \UHHHHHHHH
                     символ Unicode (ISO/IEC 10646), чиїм  значенням  є  шістнадцяткове  значення
                     HHHHHHHH (від однієї до восьми шістнадцяткових цифр)
              \cx    символ control-x

       Розгорнутий результат буде виразом в одинарних лапках, так, наче символу долара не було.

       Взяття  рядка  у  подвійні лапки, перед якими вказано символ долара ($"рядок") призведе до
       того,  що  рядок  буде  перекладено  відповідно  до  поточної  локалі.  Пошук  і  переклад
       повідомлень  буде  виконано  інфраструктурою  gettext  з  використанням  змінних  оболонки
       LC_MESSAGES та TEXTDOMAIN. Якщо поточною локаллю є  C  або  POSIX,  якщо  немає  доступних
       перекладів  або  якщо  рядок  не  перекладено,  символ долара буде проігноровано. Це форма
       екранування подвійними лапками, отже рядок типово лишатиметься взятим у подвійні лапки,  є
       він  перекладеним  або  заміненим  чи  ні. Якщо увімкнено параметр noexpand_translation за
       допомогою вбудованої команди shopt, перекладені рядки буде взято в одинарні лапки, замість
       подвійних. Див. опис shopt нижче у розділі ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ.

ПАРАМЕТРИ

       Параметром  є  запис,  який  зберігає  значення.  Це  може  бути  назва, число або один із
       спеціальних символів, список яких наведено нижче у розділі Спеціальні  параметри.  Змінною
       будемо  називати  параметр,  який  позначено  назвою. Змінна має значення і нуль, один або
       декілька атрибутів. Атрибути призначаються за допомогою вбудованої команди  declare  (див.
       declare нижче у розділі ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ).

       Параметр  встановлено,  якщо  йому  надано значення. Коректним значенням є порожній рядок.
       Щойно змінну встановлено,  встановлення  можна  скасувати  лише  за  допомогою  вбудованої
       команди unset (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).

       Змінній можна надати значення за допомогою інструкції у формі

              назва=[значення]

       Якщо  значення  не задано, змінній буде надано значення порожнього рядка. У всіх значеннях
       буде виконано розгортання  тильди,  розгортання  параметрів  та  змінних,  заміни  команд,
       арифметичні  обчислення  та  вилучення  лапок  (див.  РОЗГОРТАННЯ нижче). Якщо для змінної
       встановлено атрибут integer, значення буде обчислено як арифметичний вираз, навіть якщо не
       використано  розгортання  $((...))  (див. Арифметичні обчислення нижче). Поділ на слова та
       розгортання шляхів до файлів не  виконуватимуться.  Інструкції  визначення  значень  також
       можуть  бути  аргументами  вбудованих  команд alias, declare, typeset, export, readonly та
       local (команди оголошення). У режимі  posix  ці  вбудовані  команди  можуть  з'являтися  у
       команді  після  одного  або декількох екземплярів вбудованих команд команда і зберігати ці
       властивості інструкції встановлення значення.

       У контексті, де інструкція встановлення значення визначає значення  змінної  оболонки  або
       індексу  масиву,  оператором  +=  можна  скористатися  для  дописування  або  додавання до
       попереднього  значення  змінної.  Це  стосується  аргументів  вбудованих  команд,  зокрема
       declare,  які  приймають  інструкції  зі встановлення значень (команд оголошення). Якщо +=
       застосовано до змінної, Для якої встановлено integer атрибут, значення буде  обчислено  як
       арифметичний вираз і додано до поточного значення змінної, яке теж буде обчислено. Якщо +=
       застосовано до змінної-масиву за допомогою складеного встановлення значення  (див.  Масиви
       нижче),  значення  змінної  буде встановлено (як це було б у результаті застосування =), а
       ові значення буде дописано до масиву, починаючи  з  індексу,  що  на  одиницю  більший  за
       поточний  максимальний  індекс  масиву (для індексованих масивів), або додано як додаткові
       пари ключ-значення в  асоціативних  масивах.  При  застосуванні  до  змінної  із  рядковим
       значенням значення буде розгорнуто і дописано до значення змінної.

       Змінній  можна  встановити  атрибут  nameref  за  допомогою параметра -n вбудованих команд
       declare і local (див. опис команд  declare  і  local  нижче)  для  створення  nameref  або
       посилання  на  іншу  змінну.  У  такий  спосіб можна працювати зі змінними опосередковано.
       Кожного разу при  посиланні  на  змінну  nameref,  встановленні  її  значення,  скасуванні
       встановлення  значення  або внесенні змін до атрибутів (окрім використання та зміни самого
       атрибуту nameref) дію буде виконано зі змінною, назвою якої є  значення  змінної  nameref.
       Типовим  використанням  nameref  у  функціях  оболонки  є  посилання  на змінну, чия назва
       передається як аргумент  функції.  Наприклад,  якщо  назву  змінної  передано  до  функції
       оболонки як її перший аргумент, виконання
              declare -n ref=$1
       у  межах  функції створює змінну nameref ref, чиїм значенням є назва змінної, яку передано
       як перший аргумент. Посилання і встановлення значень, а  також  зміну  її  атрибутів  буде
       оброблено  як  посилання,  встановлення значень та внесення змін до атрибутів змінної, чию
       назву було передано як $1. Якщо керівна змінна  у  циклі  for  має  атрибут  nameref,  при
       виконанні  циклу список слів може бути списком змінних оболонки, а посилання на назву буде
       встановлено для кожного слова у  списку  за  чергою.  Змінним-масивам  не  можна  надавати
       атрибут  nameref.  Втім  змінні  nameref  можу  посилатися  на  змінні-масиви  і підписані
       змінні-масиви. Можна скасовувати  значення  записів  nameref  за  допомогою  параметра  -n
       вбудованої команди unset. Якщо не додати такий параметр, при виконанні unset із аргументом
       назви змінної nameref буде скасовано встановлення назви для змінної,  на  яку  посилається
       змінна nameref.

   Позиційні параметри
       Позиційний  параметр  —  параметр,  який  позначено  однією  або декількома цифрами, окрім
       одинарної цифри 0. Значення позиційних параметрів встановлюються з аргументів оболонки при
       її  виклику.  Змінити  значення  параметрів  можна  за  допомогою  вбудованої команди set.
       Встановлювати значення позиційних параметрів не можна за  допомогою  звичайних  інструкцій
       встановлення  значень.  Позиційні  параметри  тимчасово  замінюються  при  виклику функції
       оболонки (див.  ФУНКЦІЇ нижче).

       Для розгортання позиційних параметрів, які складаються з декількох цифр, їх слід вказувати
       у фігурних дужках (див.  РОЗГОРТАННЯ нижче).

   Спеціальні параметри
       Деякі  з  параметрів  оболонка  обробляє  в  особливий  спосіб. На ці параметри можна лише
       посилатися. Встановлення їхнього значення у звичайний спосіб заборонено.
       *      Розгортається у позиційні параметри, починаючи з першого. Якщо розгорнутий текст не
              перебуває  у  подвійних лапках, кожен позиційний параметр розгортатиметься в окреме
              слово. У контексті виконання ці слова  підлягають  подальшому  поділу  на  слова  і
              розгортанню  назв  шляхів.  Якщо  розгортання відбувається у подвійних лапках, воно
              відбуватиметься до одного слова, що складатиметься зі значень усіх параметрів,  які
              буде відокремлено першим символом спеціальної змінної IFS. Тобто, "$*" еквівалентне
              до "$1c$2c...", де c — перший символ значення змінної IFS.  Якщо  значення  змінної
              IFS  не  встановлено,  параметри  буде  відокремлено пробілами. Якщо значення IFS є
              порожнім, параметри буде з'єднано без проміжних роздільників.
       @      Розгортається  у  позиційні  параметри,  починаючи  з  першого.  У  контекстах,  де
              виконується  поділ  на  слова кожен позиційний параметр буде розгорнуто до окремого
              слова. Якщо розгортання відбувається не у подвійних лапках,  ці  слова  також  буде
              поділено  на  окремі  слова.  У  контекстах,  де  не  виконується  поділу на слова,
              розгортання  відбувається  до  одного  слова,  у  якому  позиційні  параметри  буде
              відокремлено  пробілом.  Якщо  розгортання  відбувається  у подвійних лапках, кожен
              параметр розгорається до окремого слова. Тобто, "$@" еквівалентне до "$1" "$2"  ...
              Якщо   розгортання  у  подвійних  лапках  відбувається  у  межах  слова,  результат
              розгортання першого  параметра  об'єднується  із  початковою  частиною  початкового
              слова,  а  результат  розгортання  останнього  параметра  об'єднується із останньою
              частиною початкового слова. Якщо позиційних параметрів немає, "$@" і $@ ні до  чого
              не розгортаються (тобто, їх буде вилучено).
       #      Розгортається до числа позиційний параметрів у десятковому записі.
       ?      Розгортається до коду стану виходу останнього виконаного конвеєра переднього плану.
       -      Розкриває  прапорці поточних опцій, що вказані при виклику, через вбудовану команду
              set, або встановлені самою оболонкою  (як опція -i).
       $      Розкриває  ідентифікатор  процесу  оболонки.  В  підоболонці  воно   розкриває   до
              ідентифікатора процесу поточної оболонки, а не підоболонки.
       !      Розкриває  ІД  процесу  завдання,  що  було покладено у фон останнім, або викликане
              асинхронною командою або черед вбудоване bg (див.  JOB CONTROL нижче).
       0      Розкриває  назву  оболонки  або  скрипту  оболонки.  Воно   встановлене   під   час
              ініціалізації  оболонки.  Якщо  bash  викликано  файлом команд, $0 встановлюється в
              назву того файлу. Якщо bash запущено з опцією -c, тоді $0 встановлюється  в  перший
              аргумент після рядка для виконання, якщо він присутній. Інакше, воно встановлюється
              в назву файлу, якого використали для запуску bash, як надано нульовим аргументом.

   Змінні оболонки
       Оболонка встановлює значення таких змінних:

       _      Під час запуску оболонки отримує  значення  шляху,  який  використано  для  виклику
              оболонки або назви скрипту, який виконується, у тому вигляді, у якому його передано
              у середовищі, або списку аргументів.  Далі,  після  розгортання,  розгортається  до
              останнього  аргументу попередньої простої команди, яку виконано в основному режимі.
              Також отримує значення повного шляху, який використано для виклику кожної виконаної
              команди,  і  записується  до  середовища,  яке  експортовано  для цієї команди. При
              перевірці пошти цей параметр містить назву поштового файла, перевірку якого виконує
              програма.
       BASH   Розгортається до повної назви файла, використано для виклику цього екземпляра bash.
       BASHOPTS
              Список  відокремлених  двокрапками  увімкнених  параметрів  оболонки. Кожне слово у
              списку  є  коректним  аргументом  параметра  -s  вбудованої  команди  shopt   (див.
              ВБУДОВАНІ  КОМАНДИ ОБОЛОНКИ нижче). Параметри, які з'являються у списку BASHOPTS, є
              тими параметрами, про які shopt звітує, як про увімкнені. Якщо у  середовищі  є  ця
              змінна, при запуску bash кожен параметр оболонки у списку буде увімкнено до читання
              будь-яких файлів запуску. Цю змінну призначено лише для читання.
       BASHPID
              Розгортається до ідентифікатора поточного процесу  bash.  Це  значення,  за  певних
              обставин,  зокрема  підоболонок,  які  не  потребують повторної ініціалізації bash,
              відрізняється від $$. Спроба встановлення значення BASHPID ні на що не вплине. Якщо
              скасувати  встановлення  BASHPID,  змінна втрачає свої особливі властивості, навіть
              якщо згодом значення буде повторно встановлено.
       BASH_ALIASES
              Змінна-асоціативний  масив,  елементи  якого   відповідають   внутрішньому   списку
              псевдонімів, який підтримується вбудованим засобом alias. Елементи, додані до цього
              масиву, відображаються в списку  псевдонімів;  однак  скасування  елементів  масиву
              наразі не призводить до видалення псевдонімів зі списку псевдонімів. Якщо скасувати
              встановлення BASH_ALIASES, змінна втрачає свої особливі властивості, навіть якщо її
              згодом перевстановити.
       BASH_ARGC
              Змінна-масив,  значеннями  якої  є  кількості  параметрів у кожному кадрі поточного
              стека викликів виконання bash. Кількість параметрів поточної  підпрограми  (функції
              оболонки  або  сценарію,  що  виконується  за допомогою .  або source) міститься на
              вершині  стека.  Коли  виконується  підпрограма,  кількість  переданих   параметрів
              передається  в  BASH_ARGC.  Оболонка встановлює BASH_ARGC лише в режимі розширеного
              налагодження  (див.  нижче  опис  параметра  extdebug  вбудованого  засобу  shopt).
              Встановлення  extdebug  після  того,  як  оболонка  почала виконувати сценарій, або
              посилання  на  цю  змінну,  коли  extdebug  не  встановлено,  може   призвести   до
              невідповідних значень.
       BASH_ARGV
              Змінна-масив, яка містить всі параметрів у поточному стеку викликів виконання bash.
              Останній параметр останнього виклику підпрограми міститься на вершині стека; перший
              параметр   початкового  виклику  -  внизу.  Коли  виконується  підпрограма,  надані
              параметри передаються в BASH_ARGV. Оболонка  встановлює  BASH_ARGV  лише  в  режимі
              розширеного  налагодження  (див.  нижче  опис параметра extdebug вбудованого засобу
              shopt). Встановлення extdebug після того, як оболонка почала  виконувати  сценарій,
              або  посилання  на  цю  змінну,  коли  extdebug  не  встановлено, може призвести до
              невідповідних значень.
       BASH_ARGV0
              При посиланні ця змінна  розширюється  до  назви  оболонки  або  сценарію  оболонки
              (ідентичне  $0;  див.  опис  спеціальних  параметрів 0 вище). Присвоєння BASH_ARGV0
              призводить  до  присвоєння  того  ж  значення  $0.  Якщо   скасувати   встановлення
              BASH_ARGV0,   вона  втрачає  свої  особливі  властивості,  навіть  якщо  її  згодом
              перевстановити.
       BASH_CMDS
              Змінна-асоціативний  масив,  елементи  якого  відповідають  внутрішній  геш-таблиці
              команд,  якe  підтримує  вбудований  засіб  hash. Елементи, додані до цього масиву,
              з'являються в геш-таблиці; однак скасування елементів масиву наразі  не  призводить
              до  видалення  назв  команд  із геш-таблиці. Якщо скасувати встановлення BASH_CMDS,
              змінна втрачає свої особливі властивості, навіть якщо її згодом перевстановити.
       BASH_COMMAND
              Команда, яка зараз виконується або  має  виконуватись,  якщо  оболонка  не  виконує
              команду  в результаті пастки, і в цьому випадку це команда, яка виконується під час
              пастки. Якщо скасувати встановлення  BASH_COMMAND,  змінна  втрачає  свої  особливі
              властивості, навіть якщо її згодом перевстановити.
       BASH_EXECUTION_STRING
              Аргумент команди до параметра виклику -c.
       BASH_LINENO
              Змінна-масив,  чиї  елементи  є  номерами  рядків  у  файлах  початкового  коду, де
              викликано кожен відповідний елемент FUNCNAME. ${BASH_LINENO[$i]} є номером рядка  у
              файлі  початкового  коду  (${BASH_SOURCE[$i+1]}), де було викликано ${FUNCNAME[$i]}
              (або ${BASH_LINENO[$i-1]}, якщо на нього посилаються у іншій функції оболонки). Для
              отримання номера поточного рядка скористайтеся LINENO.
       BASH_LOADABLES_PATH
              Список  відокремлених  двокрапками каталогів, у яких оболонка буде шукати динамічно
              завантажувані вбудовані команди, які вказано командою enable.
       BASH_REMATCH
              Змінна-масив, чиїм елементам надають значення за допомогою двійкового оператора  =~
              у  команді  умови  [[. Елемент із індексом 0 є частиною рядка, яка точно відповідає
              усьому формальному виразу. Елемент із індексом n є частиною рядка,  яка  відповідає
              n-ій взятій у круглі дужки частині виразу.
       BASH_SOURCE
              Змінна-масив,  чиїми  елементами  є  назви  файлів  початкового  коду, де визначено
              відповідні назви функцій  оболонки  у  змінній-масиві  FUNCNAME.  Функцію  оболонки
              ${FUNCNAME[$i]}    визначають   у   файлі   ${BASH_SOURCE[$i]}   і   викликають   з
              ${BASH_SOURCE[$i+1]}.
       BASH_SUBSHELL
              Збільшується на одиницю із кожним переходом до наступної підоболонки або середовища
              підоболонки, якщо оболонку запускають у цьому середовищі. Початковим значенням є 0.
              Якщо не встановлено значення  BASH_SUBSHELL,  втрачає  свої  особливі  властивості,
              навіть якщо згодом значення буде встановлено.
       BASH_VERSINFO
              Призначена  лише  для  читання  змінна-масив,  чиїми  елементами є дані щодо версії
              поточного екземпляра bash. Елементи масиву мають такі значення:
              BASH_VERSINFO[0]        Номер основної версії (випуск).
              BASH_VERSINFO[1]        Номер проміжної версії (версія).
              BASH_VERSINFO[2]        Рівень латки.
              BASH_VERSINFO[3]        Версія збірки.
              BASH_VERSINFO[4]        Стан випуску (наприклад, beta1).
              BASH_VERSINFO[5]        Значення MACHTYPE.
       BASH_VERSION
              Розгортається до рядка, який описує версію цього екземпляра bash.
       COMP_CWORD
              Індекс у ${COMP_WORDS} слова, на якому перебуває курсор.  Доступ  до  цієї  змінної
              можна  отримати  лише у функціях оболонки, які викликають можливості програмованого
              доповнення тексту (див. Програмоване доповнення нижче).
       COMP_KEY
              Клавіша (або кінцева клавіша у послідовності клавіш), яка викликає поточну  функцію
              доповнення.
       COMP_LINE
              Поточний  рядок  команди.  Ця змінна доступна лише у функціях оболонки та зовнішніх
              командах, які викликано можливостями програмованого доповнення  (див.  Програмоване
              доповнення нижче).
       COMP_POINT
              Індекс  поточної  позиції  курсора відносно початку поточної команди. Якщо поточною
              позицією  курсора  є  кінець  поточної  команди,  значення  цієї  змінної  дорівнює
              ${#COMP_LINE}.  Ця  змінна доступна лише у функціях оболонки та зовнішніх командах,
              які викликано можливостями програмованого доповнення (див. Програмоване  доповнення
              нижче).
       COMP_TYPE
              Встановлюють ціле значення, яке відповідає типу доповнення, яке призвело до виклику
              функції доповнення: TAB — звичайне доповнення, ?  —  доповнення  за  списком  після
              послідовного  натискання клавіші табуляції, ! — доповнення за списком варіантів при
              доповненні за частиною слова, @ —  доповнення  за  списком,  якщо  слово  лишається
              незмінним,  або  %  —  доповнення  за  меню. Ця змінна є доступною, лише у функціях
              оболонки і зовнішніх командах, які викликають можливості програмованого  доповнення
              (див. Програмоване доповнення нижче).
       COMP_WORDBREAKS
              Набір  символів, які бібліотека readline обробляє як роздільники слів при виконанні
              доповнення  слів.  Якщо  не  встановлено  значення  COMP_WORDBREAKS,  втрачає  свої
              особливі  властивості,  навіть  якщо  значення цієї змінної буде надалі встановлено
              повторно.
       COMP_WORDS
              Змінна-масив (див. Масиви нижче), що складається з окремих слів у  поточному  рядку
              команди. Рядок буде поділено на слова так, як його ділить readline, з використанням
              COMP_WORDBREAKS, як це описано вище. Ця змінна доступна лише у  функціях  оболонки,
              які  викликають  можливості програмованого доповнення (див. Програмоване доповнення
              нижче).
       COPROC Змінна-масив (див. Масиви нижче), яку створено для зберігання  дескрипторів  файлів
              для виведення та введення даних для копроцесу без назви (див. Копроцеси вище).
       DIRSTACK
              Змінна-масив  (див.  Масиви  нижче),  яка  містить  поточний вміст стосу каталогів.
              Каталоги буде розташовано у стосі у тому ж  порядку,  що  і  у  списку,  показаному
              вбудованою  командою  dirs. Встановленням значення для елементів цього масиву можна
              скористатися для внесення змін до записів  каталогів  у  стосі,  але  додавання  та
              вилучення   каталогів  слід  користуватися  вбудованими  командами  pushd  і  popd.
              Встановлення значення цієї змінної не змінюватиме поточного каталогу. Якщо значення
              DIRSTACK  не  встановлено,  змінна  втрачає  свої особливі властивості, навіть якщо
              значення згодом буде встановлено.
       EPOCHREALTIME
              Кожне посилання на цей параметр буде  розгорнуто  до  кількості  секунд  з  моменту
              початку  епохи  Unix  (див.  time(3))  у  форматі  з  рухомою крапкою і точністю до
              мікросекунд. Спроби встановити значення для EPOCHREALTIME буде проігноровано.  Якщо
              значення  EPOCHREALTIME  не  встановлено, змінна втрачає свої особливі властивості,
              навіть якщо згодом її значення буде встановлено.
       EPOCHSECONDS
              Кожне посилання на цей параметр буде  розгорнуто  до  кількості  секунд  з  моменту
              початку  епохи Unix (див time(3)). Спроби встановити значення для EPOCHSECONDS буде
              проігноровано. Якщо значення  EPOCHSECONDS  не  встановлено,  змінна  втрачає  свої
              особливі властивості, навіть якщо згодом її значення буде встановлено.
       EUID   Розгортається  до  ідентифікатора  ефективного  користувача  поточного користувача.
              Ініціалізується під час запуску оболонки. Цю змінну призначено лише для читання.
       FUNCNAME
              Змінна-масив, яка містить назви усіх функцій оболонки у поточному  стеку  викликів.
              Елемент  із  індексом  0  є  назвою  будь-якої  функції оболонки, яка виконується у
              поточний момент. Найнижчим елементом у списку (елементом із найбільшим індексом)  є
              "main".   Ця  змінна  існує  лише  тоді,  коли виконується функція оболонки. Спроби
              встановити  значення  FUNCNAME  буде  проігноровано.  Якщо  значення  FUNCNAME   не
              встановлено,  змінна  втрачає  свої  особливі  властивості,  навіть  якщо згодом її
              значення буде встановлено.

              Цією змінною можна скористатися  у  поєднанні  із  BASH_LINENO  та  BASH_SOURCE.  У
              кожного  елемента  FUNCNAME  є відповідні елементи у BASH_LINENO та BASH_SOURCE для
              опису  стека  викликів.  Наприклад,  ${FUNCNAME[$i]}   було   викликано   з   файла
              ${BASH_SOURCE[$i+1]}   у   рядку  з  номером  ${BASH_LINENO[$i]}.  На  основі  цієї
              інформації показує дані щодо поточного стекла викликів вбудована команда caller.
       GROUPS Змінна-масив, яка містить список груп, учасником яких є поточний користувач. Спроби
              встановити значення GROUPS буде проігноровано. Якщо значення GROUPS не встановлено,
              змінна втрачає свої особливі властивості,  навіть  якщо  згодом  її  значення  буде
              встановлено.
       HISTCMD
              Номер  у  журналі  або  індекс у списку журналу поточної команди. Спроби встановити
              значення HISTCMD буде проігноровано. Якщо значення HISTCMD не  встановлено,  змінна
              втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено.
       HOSTNAME
              Автоматично заповнюється назвою поточного вузла.
       HOSTTYPE
              Автоматично  встановлюється  значення  рядка,  який  унікальним  чином  описує  тип
              комп'ютера, на якому запущено bash. Типове значення залежить від системи.
       LINENO Кожне посилання на цей параметр буде замінено на десяткове  число,  яке  відповідає
              поточному послідовному номеру рядка (відлік починається з 1) у скрипті або функції.
              Якщо параметр використано не у скрипті або функції, підставлене значення може  бути
              беззмістовним.  Якщо  значення  LINENO не встановлено, змінна втрачає свої особливі
              властивості, навіть якщо згодом її значення буде встановлено.
       MACHTYPE
              Автоматично встановлюється значення рядка, який  повністю  описує  тип  операційної
              системи,   у   якій   запущено  bash  у  форматі,  який  визначено  стандартом  GNU
              процесор-компанія-система. Типове значення залежить від системи.
       MAPFILE
              Змінна-масив (див Масиви нижче), яку створено для зберігання тексту, який прочитано
              за допомогою вбудованої команди mapfile, яку виконано без визначення назви змінної.
       OLDPWD Попередній робочий каталог, який було встановлено командою cd.
       OPTARG Значення  останнього аргументу параметра, яке оброблено вбудованою командою getopts
              (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).
       OPTIND Індекс наступного аргументу параметра,  який  буде  оброблено  вбудованою  командою
              getopts (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).
       OSTYPE Автоматично  встановлюється  значення рядка, який описує операційну систему, у якій
              запущено bash. Типове значення залежить від системи.
       PIPESTATUS
              Змінна-масив (див Масиви нижче), у якій зберігається  список  значень  кодів  стану
              виходу  від процесів у найсвіжішому виконаному основному конвеєрі команд (який може
              містити і лише одну команду).
       PPID   Ідентифікатор процесу батьківського процесу оболонки. Цю змінну призначено лише для
              читання.
       PWD    Поточний робочий каталог, який було встановлено командою cd.
       RANDOM Кожен   раз,  коли  використовується  цей  параметр,  програма  розгортає  його  до
              випадкового цілого числа у межах від 0 до 32767.  Наданням  RANDOM  значення  можна
              ініціалізувати  послідовність  псевдовипадкових  чисел.  Якщо  значення  RANDOM  не
              встановлено, змінна втрачає особливі властивості, навіть якщо  її  значення  згодом
              буде встановлено повторно.
       READLINE_ARGUMENT
              Будь-який  числовий  аргумент,  наданий  команді  readline,  який було визначено за
              допомогою "bind  -x"  (див.   ВБУДОВАНІ  КОМАНДИ  ОБОЛОНКИ  нижче),  коли  її  було
              викликано.
       READLINE_LINE
              Вміст  буфера рядків readline для використання з "bind -x" (див.  ВБУДОВАНІ КОМАНДИ
              ОБОЛОНКИ нижче).
       READLINE_MARK
              Позиція позначки  (збереженої  точки  вставлення)  у  буфері  рядків  readline  для
              використання  з  "bind  -x"  (див.   ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче). Символи між
              точкою вставлення та позначкою часто називають областю.
       READLINE_POINT
              Позиція точки вставлення у буфері рядків readline  для  використання  з  "bind  -x"
              (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).
       REPLY  Встановлюється значення рядка вхідних даних, який прочитано командою read, якщо цій
              команді не передано жодних аргументів.
       SECONDS
              Кожен запис цього параметра буде  замінено  на  кількість  секунд,  які  минули  із
              моменту  виклику  оболонки.  Якщо  інструкцією  буде  встановлено значення SECONDS,
              значення яким буде замінено наступні записи параметра визначатиметься як  кількість
              секунд, які минули з моменту встановлення значення разом із встановленим значенням.
              Кількість секунд з моменту виклику оболонки та поточний час завжди  визначатиметься
              за  допомогою  запитів  до годинника системи. Якщо значення SECONDS не встановлено,
              змінна втрачає свої особливі властивості,  навіть  якщо  згодом  її  значення  буде
              встановлено.
       SHELLOPTS
              Список  відокремлених  двокрапками  увімкнених  параметрів  оболонки. Кожне слово у
              списку є коректним аргументом параметра -o вбудованої команди set (див.   ВБУДОВАНІ
              КОМАНДИ  ОБОЛОНКИ  нижче).  Параметри,  які  з'являються у списку SHELLOPTS, є тими
              параметрами, про які set -o звітує, як  про  увімкнені.  Якщо  у  середовищі  є  ця
              змінна, при запуску bash кожен параметр оболонки у списку буде увімкнено до читання
              будь-яких файлів запуску. Цю змінну призначено лише для читання.
       SHLVL  Збільшується на одиницю кожного разу, коли запускається екземпляр bash.
       SRANDOM
              Кожен запис цієї змінної розгортається у 32-бітове псевдовипадкове число. Генератор
              випадкових чисел є нелінійним у системах, де передбачено підтримку /dev/urandom або
              arc4random, отже усі повернуті числа не пов'язано із попередніми. Встановлення бази
              випадковості  не  передбачено,  тому  спроби встановлення для цієї змінної значення
              буде проігноровано. Якщо значення  SRANDOM  не  встановлено,  змінна  втрачає  свої
              особливі властивості, навіть якщо згодом її значення буде встановлено.
       UID    Розгортається  до  ідентифікатора  поточного  користувача.  Ініціалізується під час
              запуску оболонки. Цю змінну призначено лише для читання.

       Оболонка використовує описані нижче  змінні.  У  деяких  випадках  bash  призначає  типове
       значення змінної. Нижче для таких випадків наведено нотатки.

       BASH_COMPAT
              Значення  використовують  для  встановлення  рівня сумісності оболонки. Опис різних
              рівнів сумісності та їхнього впливу на роботу оболонки  наведено  у  розділі  РЕЖИМ
              СУМІСНОСТІ  ОБОЛОНКИ.  Значення може бути десятковий дріб (наприклад, 4.2) або ціле
              число (наприклад, 42), яке відповідає  бажаному  рівню  сумісності.  Якщо  значення
              BASH_COMPAT  не  встановлено  або  встановлено  значення  порожнього  рядка, рівень
              сумісності  буде  типовим  для  поточної  версії  програми.  Якщо  для  BASH_COMPAT
              встановлено  значення,  яке  не  є  коректним  значенням рівня сумісності, оболонка
              виведе повідомлення про помилку і встановить рівень сумісності, який є типовим  для
              поточної  версії оболонки. Коректні рівні сумісності описано нижче у розділі BРЕЖИМ
              СУМІСНОСТІ ОБОЛОНКИ. Наприклад, 4.2 і 42 є коректними значеннями, які  відповідають
              параметру  compat42  команди  shopt  і встановлюють рівень сумісності 42. Коректним
              значенням також є номер поточної версії оболонки.
       BASH_ENV
              Якщо встановлено значення цього параметра, коли bash виконує  скрипт  оболонки,  це
              значення  буде  оброблено  як  назву  файла, який містить команди для ініціалізації
              оболонки,  як  у  ~/.bashrc.  Значення  BASH_ENV  буде  оброблено  із  розгортанням
              параметрів,  заміною  команд  та  арифметичними  обчисленнями,  перш  ніж його буде
              використано як назву файла. Для пошуку потрібного файла не буде використано  змінну
              PATH.
       BASH_XTRACEFD
              Якщо  встановлено  значення  цілого  числа,  яке  відповідає коректному дескриптору
              файла, bash запише створені під час виконання дані трасування, якщо  увімкнено  set
              -x  для  цього  дескриптора  файла.  Дескриптор  файла  буде закрито у відповідь на
              скасування встановлення значення BASH_XTRACEFD або встановлення нового значення для
              цієї  змінної.  Якщо значення BASH_XTRACEFD не встановлено або встановлено значення
              порожнього рядка, дані трасування буде надіслано до стандартного виведення помилок.
              Зауважте,   що   встановлення   для  BASH_XTRACEFD  значення  2  (дескриптор  файла
              стандартного виведення  помилок)  з  наступним  скасуванням  встановлення  значення
              призведе до закриття стандартного виведення помилок.
       CDPATH Шлях  пошуку  для  команди  cd.  Це  список  записів  каталогів,  які  відокремлено
              двокрапками, у якому оболонка шукатиме каталоги призначення, які  вказано  командою
              cd. Зразок значення: ".:~:/usr".
       CHILD_MAX
              Встановити  кількість значень стану завершених дочірніх процесів, які має зберігати
              оболонка. Bash забороняє зменшення цього  значення  до  рівня,  який  є  нижчим  за
              обов'язковий  мінімум  POSIX.  Передбачено  також  максимальне значення (у поточній
              версії 8192), яке теж не  можна  перевищувати.  Мінімальне  значення  залежить  від
              системи.
       COLUMNS
              Використовується  у  складеній  команді  select для визначення ширини термінала при
              виведенні списків вибору. Буде встановлено  автоматично,  якщо  увімкнено  параметр
              checkwinsize або в інтерактивній оболонці при отриманні SIGWINCH.
       COMPREPLY
              Змінна-масив, з якої bash читає можливі доповнення, створені функцією оболонки, яку
              викликано можливостями  програмованого  доповнення  (див.  Програмоване  доповнення
              нижче). У кожному з елементів масиву міститься можливий варіант доповнення.
       EMACS  Якщо  bash виявить цю змінну у середовищі, коли оболонку буде запущено зі значенням
              "t", програма припускатиме, що оболонку запущено у режимі буфера оболонки Emacs,  і
              вимкне редагування рядка.
       ENV    Розгортається  і  виконується  подібно  до  BASH_ENV (див. ВИКЛИК вище) при виклику
              інтерактивної оболонки у режимі posix.
       EXECIGNORE
              Список відокремлених двокрапками взірців оболонки (див. Відповідність за  взірцем),
              який  визначає  список  назв  файлів,  які буде проігноровано при пошуку команди із
              використанням PATH. Файли, назви яких збігатимуться  з  одним  із  цих  взірців  не
              вважатимуться  виконуваними  у  списку  доповнення  і виконання команд при пошуку у
              каталогах PATH. Це не стосуватиметься поведінки команд [, test і  [[.  Використання
              EXECIGNORE  не  стосується  повних  шляхів  до  файлів у таблиці хешів команд. Цією
              змінною можна скористатися для ігнорування файлів бібліотек спільного використання,
              для  яких  встановлено  біт  виконання,  але  які  не  є  виконуваними файлами. При
              встановленні  відповідності  взірцю  буде  враховано  значення  параметра  оболонки
              extglob.
       FCEDIT Типовий редактор для вбудованої команди fc.
       FIGNORE
              Список   відокремлених   двокрапками   суфіксів,   які   слід  ігнорувати  під  час
              автоматичного доповнення назв файлів (див.   READLINE  нижче).  Назви  файлів,  чиї
              суфікси  збігаються  із  одним  із  записів  у  FIGNORE,  буде  виключено зі списку
              відповідних назв файлів. Зразок значення ".o:~" (Використання лапок є  обов'язковим
              при встановленні для цієї змінної значення, яке містить тильди).
       FUNCNEST
              Якщо встановлено числове додатне значення, визначає максимальний рівень вкладеності
              функцій. Виклики функцій, у  яких  перевищено  рівень  вкладеності,  призводять  до
              аварійного завершення виконання поточної команди.
       GLOBIGNORE
              Список відокремлених двокрапками взірців, який визначає набір назв файлів, які буде
              проігноровано  при  розгортанні  шляхів.  Якщо  назва   файла   відповідає   взірцю
              розгортання шляху також відповідає одному із взірців у GLOBIGNORE, її буде вилучено
              зі списку відповідників.
       HISTCONTROL
              Список відокремлених двокрапками значень, які визначають спосіб збереження команд у
              списку журналу. Якщо до списку значень включено ignorespace, рядки, які починаються
              з символу пробілу не буде збережено у списку журналу. Значення ignoredups  призведе
              до  того,  що  рядки,  які  збігаються  із  попереднім  записом  у журналі, не буде
              збережено.  Значення  ignoreboth  є  скороченням  для   поєднання   ignorespace   і
              ignoredups.  Значення  erasedups  призведе  до  того,  що  усі попередні рядки, які
              збігаються із поточним рядком буде вилучено зі списку журналу перед  збереженням  у
              ньому  поточного рядка. Усі інші значення, окрім описаних вище, буде проігноровано.
              Якщо не  встановлено  значення  HISTCONTROL  або  у  встановленому  значенні  немає
              коректних  записів, обробник читатиме і зберігатиме у списку журналу усі рядки, які
              узгоджуються зі  значенням  HISTIGNORE.  Другий  і  наступні  рядки  багаторядкових
              складених  команд  не  перевірятимуться,  їх  буде додано до журналу без врахування
              значення HISTCONTROL.
       HISTFILE
              Назва файла, у якому буде збережено журнал команд (див.   HISTORY  нижче).  Типовим
              значенням  є  ~/.bash_history.  Якщо значення не встановлено, при виході з оболонки
              журнал команд збережено не буде.
       HISTFILESIZE
              Максимальна кількість рядків, які  можуть  міститися  у  файлі  журналу.  Якщо  цій
              змінній  надано  значення, файл журналу буде обрізано, якщо це потрібно, так, щоб у
              ньому містилося не більше вказаної кількості  рядків  —  буде  вилучено  найстаріші
              записи. Файл журналу також буде обрізано до цього розміру після запису до нього під
              час виходу з оболонки. Якщо значенням змінної є 0, файл журналу  буде  обрізано  до
              нульового  розміру.  Нечислові значення або від'ємні числові значення призводять до
              заборони обрізання. Оболонка встановлює типове значення за значенням HISTSIZE після
              читання усіх файлів запуску оболонки.
       HISTIGNORE
              Список  відокремлених  двокрапками взірців, які буде використано для вибору команд,
              які слід зберегти у списку журналу. Кожен взірець буде прив'язаний до початку рядка
              і   має   збігатися   із  усім  рядком  (без  неявного  додавання  «*»).  Перевірку
              відповідності кожного з взірців рядку буде виконано після  застосування  перевірок,
              які  визначено  HISTCONTROL.  Окрім  звичайних  символів відповідності взірців, «&»
              відповідає попередньому рядку у журналі. «&» можна екранувати за допомогою  символу
              зворотної  похилої  риски;  зворотну  похилу  риску  буде  вилучено  перед  спробою
              встановлення відповідності. Перевірка другого  і  наступних  рядків  багаторядкової
              складеної  команди не виконуватиметься — ці рядки буде додано до журналу, незалежно
              від значення HISTIGNORE. При встановленні відповідності за взірцем  буде  враховано
              значення параметра оболонки extglob.
       HISTSIZE
              Кількість  команд,  які  слід зберігати у журналі команд (див.  ЖУРНАЛ нижче). Якщо
              значенням є 0,  збереження  команд  до  списку  команд  не  виконуватиметься.  Якщо
              значення  є  від'ємним, до списку журналу зберігатимуться усі команди (без обмежень
              на кількість). Після читання файлів запуску  оболонка  встановлює  типове  значення
              500.
       HISTTIMEFORMAT
              Якщо  ця  змінна встановлена і її значення не порожнє (null), воно використовується
              як рядок форматування strftime(3) щоб надрукувати позначку часу, пов’язану з кожним
              записом  журналу,  що  виводиться  вбудованою  командою  history.  Якщо  ця  змінна
              встановлена, мітки часу записуються до файлу журналу, щоб  вони  могли  зберігатися
              протягом  сеансів  оболонки. Щоб відрізнити позначки часу від інших рядків журналу,
              використовується символ коментаря журналу.
       HOME   Домашній каталог поточного користувача; типовий аргумент для вбудованої команди cd.
              Значення цієї змінної також використовується при розгортанні записів із тильдою.
       HOSTFILE
              Містить назву файла у тому самому форматі, що і /etc/hosts яку слід прочитати, коли
              оболонка має доповнити назву вузла. Список можливих  завершень  назви  вузла  можна
              змінити  під  час роботи оболонки; за наступної спроби завершення назви вузла після
              зміни значення, bash додасть вміст нового файлу до наявного списку.  Якщо  HOSTFILE
              встановлено, але не має значення або не називає файлу для читання, bash намагається
              прочитати /etc/hosts для  отримання  списку  можливих  варіантів  завершення  назви
              вузла. Якщо надати HOSTFILE порожнє значення, список назв вузлів буде спорожнено.
       IFS    Внутрішній  роздільник  полів (Internal Field Separator), який буде використано для
              поділу тексту на слова після розгортання і для поділу рядків на слова за  допомогою
              вбудованої команди read. Типовим значенням є “<space><tab><newline>”.
       IGNOREEOF
              Визначає дію інтерактивної оболонки у відповідь на отримання символу EOF як єдиного
              елемента вхідних даних. Якщо встановлено  значення,  воно  вважатиметься  кількістю
              послідовних  символів  EOF,  які  має  бути введено як перші символи рядків вхідних
              даних, перш ніж bash завершить роботу. Якщо змінна  існує,  але  не  має  числового
              значення  або  взагалі  не  має значення, буде використано типове значення 10. Якщо
              змінної не існуватиме, для оболонки EOF буде кінцем введення.
       INPUTRC
              Назва файла запуску readline. Перевизначає типову назву ~/.inputrc (див.   READLINE
              нижче).
       INSIDE_EMACS
              Якщо  у  середовищі  є  ця  змінна  на  момент запуску оболонки, bash припускає, що
              програму запущено всередині буфера оболонки і  може  вимкнути  редагування  рядків,
              залежно від значення змінної TERM.
       LANG   Використовується  для  визначення  категорії локалі для усіх категорій, які не було
              окремо вибрано за допомогою змінної, назва якої починається з LC_.
       LC_ALL Значення цієї змінної має вищий пріоритет  за  значення  LANG  та  будь-якої  іншої
              змінної LC_, яка визначає категорію локалі.
       LC_COLLATE
              Ця  змінна  визначає  порядок сортування, який буде використано при упорядковуванні
              результатів розгортання шляхів до файлів, та  визначає  поведінку  при  розгортанні
              діапазонів,  класів  еквівалентності та схем упорядковування при розгортанні шляхів
              та встановленні відповідності за взірцем.
       LC_CTYPE
              Ця змінна визначає  спосіб  обробки  символів  та  поведінку  класів  символів  при
              розгортанні шляхів до файлів та встановленні відповідності за взірцем.
       LC_MESSAGES
              Ця  змінна  визначає локаль, яку буде використано для трансляції рядків у подвійних
              лапках, яким передує символ $.
       LC_NUMERIC
              Ця змінна визначає категорію локалей, яку буде використано для форматування чисел.
       LC_TIME
              Ця змінна визначає категорію локалей, яку буде використано для форматування записів
              дати і часу.
       LINES  Використовується  у  складеній  команді select для визначення довжини стовпчика при
              виведенні списків вибору. Буде встановлено  автоматично,  якщо  увімкнено  параметр
              checkwinsize або в інтерактивній оболонці при отриманні SIGWINCH.
       MAIL   Якщо  для  цього  параметра  встановлено  значення  назви  файла або каталогу, і не
              встановлено  значення  змінної  MAILPATH,  bash  повідомлятиме  користувачеві   про
              надходження пошти до вказаного файла або каталогу у форматі Maildir.
       MAILCHECK
              Визначає  наскільки часто (у секундах) bash має перевіряти пошту. Типовим значенням
              є 60 секунд. Коли настане момент перевірити пошту, оболонка виконає відповідні  дії
              до  показу  основного  запиту.  Якщо  значення  цієї  змінної  не  встановлено  або
              встановлено значення, яке не є додатним або  нульовим,  оболонка  вимкне  перевірку
              пошти.
       MAILPATH
              Список   відокремлених   двокрапками   назв  файлів,  у  яких  слід  шукати  пошту.
              Повідомлення, яке буде виведено при  надходженні  пошти  до  певного  файла,  можна
              вказати,   відокремивши  назву  файла  від  повідомлення  за  допомогою  «?».  Якщо
              використати $_ у тексті повідомлення, змінну буде  розгорнуто  до  назви  поточного
              поштового файла. Приклад:
              MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
              Bash  можна налаштувати на надання типового значення для цієї змінної (стандартного
              значення  не  передбачено),  але  розташування  файлів   пошти   користувача,   яке
              використовуватиме оболонка, залежить від системи (наприклад, /var/mail/$USER).
       OPTERR Якщо встановлено значення 1, bash виводитиме повідомлення про помилки, які створено
              вбудованою командою getopts (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).  OPTERR  буде
              ініціалізовано   значенням  1  кожного  разу,  коли  викликатиметься  оболонка  або
              виконуватиметься скрипт оболонки.
       PATH   Шлях пошуку для команд. Це список відокремлених двокрапками  записів  каталогів,  у
              яких  оболонка  шукатиме  команди  (див.   ВИКОНАННЯ  КОМАНД нижче). Назва каталогу
              нульової довжини (null) у значенні PATH позначає поточний  каталог.  Порожня  назва
              каталогу  може  з'являтися  як  два  сусідніх  стовпчики або початковий чи кінцевий
              стовпчик. Типовий шлях залежить від системи і  визначається  адміністратором,  який
              встановив bash. Стандартним значенням є ``/usr/local/bin:/usr/local/sbin:/usr/bin:
              /usr/sbin:/bin:/sbin''.
       POSIXLY_CORRECT
              Якщо ця змінна є частиною середовища на момент запуску  bash,  оболонка  перейде  у
              режим  posix  до  читання  файлів  запуску, так, наче було вказано параметр виклику
              --posix. Якщо встановити значення змінної під час  роботи  оболонки,  bash  увімкне
              режим posix так, наче було виконано команду set -o posix Коли оболонка переходить у
              режим posix, вона встановлює значення для цієї змінної, якщо це значення ще не було
              встановлено.
       PROMPT_COMMAND
              Якщо встановлено значення цієї змінної, і цим значенням є масив, о показу кожного з
              основних запитів буде виконано значення кожного із елементів масиву. Якщо  значення
              встановлено,  але  воно  не є масивом, це значення буде використано як команду, яку
              слід виконати.
       PROMPT_DIRTRIM
              Якщо встановлено додатне  значення,  це  значення  буде  використано  як  кількість
              кінцевих компонентів запису каталогу, які слід зберегти при розгортанні екранованих
              послідовностей запитів \w і \W (див.  ЗАПИТИ нижче). Вилучені символи буде замінено
              трьома крапками.
       PS0    Значення   цього   параметра  буде  розгорнуто  (див.   ЗАПИТИ  нижче)  і  виведено
              інтерактивними оболонками після читання команди і перед її виконанням.
       PS1    Значення цього параметра розгортається (див.  ЗАПИТИ нижче) і  використовується  як
              основний рядок запиту. Типове значення — “\s-\v\$ ”.
       PS2    Значення  цього  параметра розгортається, як з PS1, і використовується як вторинний
              рядок запиту. Типове значення — “> ”.
       PS3    Значення цього  параметра  використовується  як  запит  для  команди  select  (див.
              ГРАМАТИКА ОБОЛОНКИ вище).
       PS4    Значення  цього параметра буде розгорнуто, як і PS1, а значення буде виведено перед
              кожною командою, яку bash виведе під  час  виконання.  Перший  символ  розгорнутого
              значення  PS4,  за потреби, буде відтворено декілька разів для позначення декількох
              рівнів опосередкованості. Типовим значенням є “+ ”.
       SHELL  Ця змінна розгортається до повного шляху до оболонки. Якщо не встановлено  під  час
              запуску  оболонки, bash встановлює для неї значення повного шляху до оболонки входу
              до системи поточного користувача.
       TIMEFORMAT
              Значення цього параметра використовується як рядок формату, що  визначає,  як  слід
              показувати  інформацію про час для конвеєрів із префіксом time. Символ % розпочинає
              escape-послідовність, яка розширюється  до  значення  часу  або  іншої  інформації.
              Escape-послідовності та їх значення такі; дужки позначають необов'язкові частини.
              %%        Символ %.
              %[p][l]R  Тривалість виконання у секундах.
              %[p][l]U  Кількість   секунд,   протягом   яких  процесор  було  задіяно  у  режимі
                        користувача.
              %[p][l]S  Кількість секунд, протягом яких процесор було задіяно у режимі системи.
              %P        Частка часу процесора, яку обчислено за формулою (%U + %S) / %R.

              Необов'язкове p є цифрою, яка визначає точність, кількість  цифр  дробової  частини
              після  десяткової  крапки.  Значення  0  означає, що не слід виводити ні крапку, ні
              дробову частину. Можна вказати до трьох позицій після десяткової  крапки;  значення
              p,  які  є  більшим  за  3,  буде  просто  замінено  на  3. Якщо p не вказано, буде
              використано значення 3.

              Необов'язкове l визначає довгий формат, включено  із  хвилинами,  форми  MMmSS.FFs.
              Значення p визначає, чи слід включати дробову частину.

              Якщо  значення  цієї  змінної  не  встановлено, bash працюватиме так, наче вона має
              значення $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'. Якщо  значення  є  порожнім,  дані
              щодо  часу  виведено не буде. При виведенні рядка форматування буде додано кінцевий
              символ нового рядка.
       TMOUT  Якщо встановлено додатне значення, TMOUT вважатиметься типовим часом очікування для
              вбудованої  команди read. Команда select завершить роботу, якщо вхідні дані не буде
              отримано  протягом  TMOUT  секунд,  якщо  вхідні  дані  надходять  з  термінала.  В
              інтерактивній оболонці значення буде використано як кількість секунд, протягом яких
              слід очікувати на рядок вхідних даних після показу основного запиту. Bash завершить
              роботу  після  очікування протягом вказаної кількості секунд, якщо не буде отримано
              повного рядка вхідних даних.
       TMPDIR Якщо встановлено, bash використовує  значення  як  назву  каталогу,  у  якому  bash
              створює тимчасові файли для використання в оболонці.
       auto_resume
              Ця змінна керує тим, як оболонка взаємодіє із користувачем і керуванням завданнями.
              Якщо  встановлено  значення  цієї  змінної,  прості  команди  з  одного  слова  без
              переспрямувань   вважатимуться   кандидатами  на  відновлення  наявного  зупиненого
              завдання.  Двозначність  заборонено:  якщо  існує  декілька  завдань,  записи  яких
              починаються  із  введеного  рядка,  буде  вибрано  завдання,  доступ  до якого було
              здійснено останнім. Назва зупиненого завдання у цьому контексті є  рядком  команди,
              яку використано для його запуску. Якщо встановлено значення exact, визначений рядок
              має  відповідати  назві  зупиненого  завдання  точно;  якщо  встановлено   значення
              substring, визначений рядок має збігатися із підрядком у назві зупиненого завдання.
              Значення substring працює подібно до ідентифікатора завдання  %?  (див.   КЕРУВАННЯ
              ЗАВДАННЯМИ  нижче).  Якщо  встановлено будь-яке інше значення, визначений рядок має
              бути префіксом назви зупиненого  завдання;  це  працює  подібно  до  ідентифікатора
              завдання %рядок.
       histchars
              Два або три символи, які керують доповненням за журналом та поділом на жетони (див.
              ДОПОВНЕННЯ ЗА ЖУРНАЛОМ нижче). Перший символ є  символом  доповнення  за  журналом,
              символом, який сигналізує про початок доповнення за журналом, зазвичай, «!». Другий
              символ є символом швидкого підставляння,  який  використовують  як  скорочення  для
              повторного запуску попередньої введеної команди, із заміною одного рядка на інший у
              команді. Типовим є символ  «^».  Необов'язковий  третій  символ  є  символом,  який
              позначає,  що  решта  рядка  є  коментарем, якщо буде виявлено, що це перший символ
              слова. Зазвичай, цим символом є «#». Поява символу коментаря у  журналі  призводить
              до того, що заміну за журналом у решті слів рядка буде пропущено. Це не обов'язково
              призведе  до  того,  що  засіб  обробки  команд  оболонки  вважатиме  решту   рядка
              коментарем.

   Масиви
       У  bash  передбачено одновимірні індексовані та асоціативні змінні-масиви. Як індексований
       масив можна  використати  будь-яку  змінну.  Масив  явним  чином  оголошується  вбудованою
       командою declare. Обмеження на максимальний розмір масиву не передбачено, як і вимоги, щоб
       усі  елементи  було  індексовано  або  асоційовано  неперервно.  Посилання   на   елементи
       індексованих  масивів  здійснюється  за  допомогою  цілих  чисел (включно із арифметичними
       виразами). Нумерація починається  з  нуля.  Посилання  на  елементи  асоціативних  масивів
       здійснюється  з  використанням  довільних  рядків.  Якщо  це  явно не визначено, індекси в
       індексованому масиві мають бути невід'ємними цілими числами.

       Індексований масив буде створено автоматично, якщо будь-якій змінній буде надано  значення
       з  використанням  синтаксичної  конструкції  назва[підпис]=значення.  Значення підпис буде
       оброблено як арифметичний вираз, результатом обчислення якого має бути  число.  Щоб  явним
       чином  оголосити  індексований  масив,  скористайтеся  командою  declare  -a  назва  (див.
       ВБУДОВАНІ  КОМАНДИ  ОБОЛОНКИ  нижче).  Також  можна  скористатися  командою   declare   -a
       назва[підпис]; підпис буде проігноровано.

       Асоціативні масиви створюють через declare -A назва.

       Атрибути  змінної-масиву  можна вказати за допомогою вбудованих команд declare і readonly.
       Кожен атрибут застосовується до усіх елементів масиву.

       Надати масиву значення можна за допомогою складених синтаксичних конструкцій  встановлення
       значень у формі назва=(значення1 ... значенняn), де кожне значення можна вказувати у формі
       [підпис]=рядок. Для індексованих масивів достатньо вказати лише рядок.  Кожне  значення  у
       списку  розгортається  з  використанням  усіх  розгортань  в оболонці, які описано нижче у
       розділі РОЗГОРТАННЯ. При  встановленні  значення  у  індексованих  масивах,  якщо  вказано
       необов'язкові  дужки  і підпис, значення буде надано елементу з відповідним індексом. Якщо
       підпис не буде вказано,  індексом  елемента,  якому  буде  надано  значення,  буде  індекс
       останнього  елемента,  якому було надано значення якоюсь інструкцією, плюс один. Нумерація
       елементів масиву починається з нуля.

       При встановленні значень асоціативного  масиву  словами  у  складеній  інструкції  надання
       значення  можуть  бути  або інструкції надання значень, для яких потрібен підпис елемента,
       або список слів, які буде оброблено як послідовність  альтернативних  ключів  та  значень:
       назва=( ключ1 значення1 ключ2 значення2 ...). Результат обробки цих слів буде таким самим,
       як для назва=( [ключ1]=значення1 [ключ2]=значення2 ...). Перше слово у списку визначає, як
       оброблятимуться  інші  слова;  усі  інструкції  надання значень у списку мають належати до
       одного типу. Якщо використовуватимуться пари ключ/значення,  ключі  не  можна  пропускати,
       вони  не  можуть  бути  порожніми;  останнє  пропущене значення буде оброблено як порожній
       рядок.

       Таку синтаксичну конструкцію також приймає вбудована  команда  declare.  Значення  окремих
       елементів     масиву    можна    вказати    за    допомогою    синтаксичної    конструкції
       назва[підпис]=значення, впровадженої вище. При наданні значення  в  індексованому  масиві,
       якщо  параметру  назва передано від'ємний індекс, для визначення індексу елемента це число
       буде додано до числа, яке на одиницю більше максимального індексу у  масиві  назва.  Отже,
       від'ємні  індекси  відраховуватимуться від кінця масиву, а індекс -1 є індексом останнього
       елемента масиву.

       Оператор += допише змінну до масиву змінних при наданні значення за  допомогою  синтаксису
       складеного надання значень; див.  ПАРАМЕТРИ вище.

       Доступ  до будь-якого елемента масиву можна отримати за допомогою синтаксичної конструкції
       ${назва[підпис]}. Фігурні дужки є обов'язковими для уникнення  конфліктів  з  розгортанням
       шляхів  до файлів. Якщо підписом є @ або *, слово буде розгорнуто до усіх елементів масиву
       назва. Ці два підписи працюють по-різному, лише якщо слово взято у  подвійні  лапки.  Якщо
       слово  взято  у подвійні лапки, ${назва[*]} розгортається до одинарного слова зі значенням
       усіх елементів масиву, які  відокремлено  один  від  одного  першим  символом  спеціальної
       змінної  IFS,  а  ${назва[@]}  розгортає кожен елемент масиву назва в окреме слово. Якщо у
       масиві немає елементів, ${назва[@]} розгортається у порожнє значення. Якщо всередині слова
       відбувається  розгортання у подвійних лапках, результат розгортання першого параметра буде
       об'єднано із початковою частиною початкового слова,  а  розгортання  останнього  параметра
       буде  об'єднано  із  останньою  частиною  початкового  слова. Така процедура є подібною до
       розгортання  спеціальних  параметрів   *   і   @   (див.   Спеціальні   параметри   вище).
       ${#назва[підпис]}  буде  розгорнуто  у  довжину ${назва[підпис]}. Якщо значенням параметра
       підпис є * або  @,  результатом  розгортання  буде  кількість  елементів  у  масиві.  Якщо
       результатом   обчислення  значення  підпис,  яке  використано  для  посилання  на  елемент
       індексованого масиву, є від'ємне число, для визначення  індексу  елемента  це  число  буде
       додано  до  числа,  яке  на  одиницю більше максимального індексу у масиві. Отже, від'ємні
       індекси відраховуватимуться від кінця масиву, а індекс -1 є індексом  останнього  елемента
       масиву.

       Посилання  на  змінну-масив без визначення підпису є еквівалентним до посилання на елемент
       масиву із  підписом  0.  Можна  використовувати  будь-які  посилання  на  змінну-масив  із
       коректним підписом. Якщо потрібно, bash автоматично створить відповідний масив.

       Значення  змінної-масиву  вважається  встановленим,  якщо підпису змінної надано значення.
       Коректним значенням може бути і порожній рядок.

       Можна отримати ключі (індекси) масиву,  а  також  значення.  ${!назва[@]}  і  ${!назва[*]}
       розгортаються  до  індексів,  які  призначено  у змінній-масиві назва. Обробка у подвійних
       лапках є подібною до розгортання спеціальних параметрів @ і * у подвійних лапках.

       Для знищення масивів використовують вбудовану команду unset. Команда  unset  назва[підпис]
       знищує  елемент  масиву  з  індексом  підпис,  як для індексованих, так і для асоційованих
       масивів. Від'ємні значення підписів буде оброблено  в  описаний  вище  спосіб.  Скасування
       встановлення  останнього  елемента  у  змінній-масиві  не  скасовує  встановлення змінної.
       Команда unset назва, де назва є назвою масиву, вилучає увесь масив.  unset  назва[підпис],
       де  підписом  є  * або @, поводиться по-різному, залежно від того, є назва індексованим чи
       асоціативним масивом. Якщо назва є асоціативним  масивом,  команда  скасовує  встановлення
       елемента  із  підписом  *  або  @.  Якщо  назва  є індексованим масивом, unset вилучає усі
       елементи, але не вилучає сам масив.

       При використанні назви змінної із підписом як аргументу команди, так само, як  із   unset,
       без  використання  синтаксису  розгортання  слів,  описаного  вище,  аргумент  підлягатиме
       розгортанню шляхів до файлів. Якщо розгортання шляхів до файлів є небажаним, аргумент слід
       взяти у лапки.

       Вбудовані  команди  declare,  local  та  readonly  приймають  параметр  -a  для визначення
       індексованого масиву та параметр -A для  визначення  асоціативного  масиву.  Якщо  вказано
       обидва  параметри,  пріоритет  має параметр -A. Вбудована команда read приймає параметр -a
       для призначення списку слів, які прочитано  зі  стандартного  джерела  вхідних  даних,  до
       масиву.  Вбудовані  команди  set  і declare показують значення масиву у спосіб, яким можна
       скористатися для встановлення значень нового масиву.

РОЗГОРТАННЯ

       Розгортання буде виконано у рядку команди після того, як  його  буде  поділено  на  слова.
       Передбачено  виконання  семи  типів розгортання: розгортання у дужках, розгортання тильди,
       розгортання параметрів і змінних, заміна команд, арифметичні обчислення, поділ на слова та
       розгортання шляхів.

       Порядок  розгортань  є  таким:  розгортання  у  дужках;  розгортання  тильди,  розгортання
       параметрів і  змінних,  арифметичні  обчислення  і  заміна  команд  (буде  виконано  зліва
       праворуч); поділ на слова і розгортання шляхів.

       У  системах,  де передбачено відповідну підтримку, доступним є ще одне розгортання: заміна
       процесу. Це розгортання буде  виконано  одночасно  із  розгортанням  тильди,  розгортанням
       параметрів і змінних, арифметичними обчисленнями і заміною команд.

       Після виконання цих розгортань символи лапок у початковому слові буде вилучено, якщо їх не
       було взято у лапки (вилучення лапок).

       Збільшити кількість слів у розгортанні можуть лише розгортання у дужках, поділ на слова  і
       розгортання  шляху;  інші  розгортання розгортають одинарне слово у одинарне слово. Єдиним
       виключенням є розгортання "$@" та "${назва[@]}", а також, здебільшого, $* та  ${назва[*]},
       як це описано вище (див.  ПАРАМЕТРИ).

   Розгортання у дужках
       Розгортання у дужках є механізмом, за яким може бути створено довільні рядки. Цей механізм
       подібний до розгортання шляхів, але породжені назви файлів можуть бути і  назвами  файлів,
       які  не  існують.  Взірці,  які  буде  оброблено  розгортанням  у  дужках,  складаються  з
       необов'язкової вступної частини, за якою має бути вказано або послідовність  відокремлених
       комами рядків, або послідовність виразів у парі фігурних дужок, яку завершує необов'язкова
       кінцева частина. Вступну частину буде дописано перед кожним рядком у  фігурних  дужках,  а
       потім  до  кожного  з  результатів буде дописано кінцеву частину. Розгортання відбувається
       зліва праворуч.

       Розгортання у  дужках  може  бути  вкладеним.  Результати  розгортання  кожного  рядка  не
       упорядковуються; зберігається порядок зліва праворуч. Приклад: a{d,c,b}e буде розгорнуто у
       «ade ace abe».

       Вираз послідовності має форму {x..y[..крок]}, де x і y є або цілими числами або одинарними
       літерами,  а  крок, необов'язковий крок у послідовності, є цілим числом. Якщо вказано цілі
       числа, вираз розгортається до кожного цілого числа від x до y, включно. До вказаних  цілих
       чисел  можна  дописати  префікс 0, щоб усі елементи у послідовності мали однакову довжину.
       Якщо x або y починається  з  нуля,  оболонка  спробує  примусово  створити  послідовність,
       елементи  якої  складатимуться  з  однакової  кількості  цифр,  дописавши  нуль там, де це
       потрібно.  Якщо  вказано  літери,  вираз  буде  розгорнуто  до   кожного   символу,   який
       лексикографічно  потрапляє  у діапазон від x до y, включно, з використанням типової локалі
       C. Зауважте, що x і y мають належати до одного типу (цілих чисел або літер). Якщо  вказано
       крок,  його  буде  використано як приріст між елементами послідовності. Типовим кроком є 1
       або -1, відповідно до взаємного розташування кінців послідовності.

       Розгортання у дужках  виконується  до  будь-яких  інших  розгортань.  У  результатах  буде
       збережено  усі  символи,  які  є  спеціальними  для інших розгортань. Розгортання є строго
       текстовим. Bash не виконує жодної синтаксичної обробки контексту розгортання або тексту  у
       фігурних дужках.

       Правильно  форматоване  розгортання  у  дужках  має  містити  ненейтралізовані початкову і
       кінцеву фігурні дужки та принаймні одну ненейтралізовану кому  або  один  коректний  вираз
       послідовності.  Усі  розгортання  у  дужках  із  помилковим  форматуванням  буде оброблено
       буквально. {  або  ,  може  бути  нейтралізовано  символом  зворотної  похилої  риски  для
       запобігання  обробці  цих  символів  як частини виразу у дужках. Щоб уникнути конфлікту із
       розгортанням параметрів, рядок ${ не є прийнятним для розгортання у дужках — він  придушує
       розгортання у дужках, аж до кінцевої }.

       Ця  конструкція  типово використовується як скорочення, якщо загальний префікс рядків, які
       має бути створено, є довшим, ніж у наведеному вище прикладі:

              mkdir /usr/local/src/bash/{old,new,dist,bugs}
       або
              chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

       Розгортання у дужках сучасних версій є дещо  несумісним  із  давніми  версіями  sh.  Старі
       версії  sh  не обробляють початкову або кінцеву фігурні дужки особливим чином, якщо вони є
       частиною слова, і зберігають їх у виведених даних. Bash у  процесі  розгортання  у  дужках
       вилучає  фігурні дужки зі слів. Наприклад, якщо передати sh слово file{1,2}, виведено буде
       те саме слово. Результатом обробки того  самого  слова  у  bash  буде  file1  file2.  Якщо
       потрібна  строга  сумісність  із  sh,  запускайте  bash  із  параметром  +B  або  вимкніть
       розгортання у дужках за допомогою  параметра  +B  команди  set  (див.   ВБУДОВАНІ  КОМАНДИ
       ОБОЛОНКИ нижче).

   Розгортання тильди
       Якщо  слово  починається з ненейтралізованого символу тильди («~»), усі символи до першого
       ненейтралізованого  символу  похилої  риски  (або  усі  символи,  якщо   у   слові   немає
       ненейтралізованої  похилої риски) вважатимуться тильда-префіксом. Якщо жоден із символів у
       тильда-префіксі не є нейтралізованим, символи  у  тильда-префіксі  вважатимуться  можливою
       назвою  облікового  запису. Якщо ця назва облікового запису є порожнім рядком, тильду буде
       замінено на значення параметра оболонки HOME. Якщо значення HOME  не  встановлено,  тильду
       буде  замінено  на  адресу  домашнього  каталогу  користувача,  від  імені  якого запущено
       оболонку.  У  всіх  інших  випадках  тильда-префікс  буде  замінено  домашнім   каталогом,
       пов'язаним із вказаною назвою облікового запису.

       Якщо  тильда-префіксом  є  «~+», тильда-префікс буде замінено на значення змінної оболонки
       PWD. Якщо тильда-префіксом  є  «~-»,  замість  нього  буде  підставлено  значення  змінної
       середовища   OLDPWD,  якщо  його  встановлено.  Якщо  символи,  які  йдуть  за  тильдою  у
       тильда-префіксі  складаються  з  числа  N,  із  необов'язковим  префіксом  «+»  або   «-»,
       тильда-префікс  буде  замінено  на  відповідний елемент зі стосу каталогів так, наче він є
       результатом  виконання  будованої  команди  dirs,  викликаної   із   тильда-префіксом   як
       аргументом.   Якщо  символи  після  тильди  у  тильда-префіксі  складаються  з  числа  без
       початкового «+» або «-», буде використано варіант із «+».

       Якщо назва облікового запису для входу є некоректною або не вдасться виконати  розгортання
       тильди, слово лишиться незмінним.

       В   усіх  інструкціях  із  встановленням  значення  змінної  буде  виконано  перевірку  на
       ненейтралізовані тильда-префікси одразу після : або першого =.  Якщо  такі  префікси  буде
       виявлено, також буде виконано розгортання тильди. Отже, можна використовувати назви файлів
       з тильдами у командах зі встановленням значень для PATH, MAILPATH  та  CDPATH  —  оболонка
       надасть змінній розгорнуте значення.

       Крім  того,  bash  виконує  розгортання  тильди  у словах, які відповідають умовам надання
       змінним значення (як це описано вище  у  розділі  ПАРАМЕТРИ),  коли  вони  з'являються  як
       аргументи  у  простих командах. У режимі posix bash цього не робитиме, окрім описаних вище
       команд оголошення.

   Розгортання параметрів
       Символ «$» впроваджує розгортання параметрів, заміну команд  або  арифметичні  обчислення.
       Назви параметрів або символів, які слід розгорнути, може бути взято у фігурні дужки, які є
       необов'язковим, але слугують для захисту змінної від розгортання змінної за символами, які
       вказано після її назви і які може бути оброблено як частину назви.

       Якщо  використано  фігурні дужки, відповідною завершальною дужкою вважатиметься перша «}»,
       яку не екрановано символом зворотної похилої риски і яка не  є  частиною  нейтралізованого
       рядка,  і  не перебуває у вбудованому арифметичному виразі, заміні команди або розгортанні
       параметра.

       ${параметр}
              Буде підставлено значення параметра. Якщо параметр є позиційним  параметром,  номер
              якого  складається  з декількох цифр, або якщо після параметра вказано символ, який
              не слід обробляти як частину  його  назви,  слід  скористатися  фігурними  дужками.
              Параметр  має  бути  параметром  оболонки,  який  описано вище (див. ПАРАМЕТРИ) або
              посиланням на масив (Масиви).

       Якщо першим символом параметра є знак оклику (!) і параметр не належить до  типу  nameref,
       він  впроваджує  рівень  опосередкованості.  Bash  використовує  значення,  яке сформовано
       розгортанням  решти  параметра  як  новий  параметр;  далі,  розгортає  цей   параметр   і
       використовує  значення  у решті розгортання замість розгортання початкового параметра. Цей
       процес відомий як  опосередковане  розгортання.  Отримане  значення  підлягає  розгортанню
       тильди,  розгортанню  параметрів, заміні команд та арифметичним обчисленням. Якщо параметр
       належить до типу nameref, розгортання дає назву параметра, на який посилається параметр, а
       не   повне   опосередковане  розгортання.  Виключеннями  з  цього  правила  є  розгортання
       ${!префікс*} та ${!назва[@]}, які  описано  нижче.  Щоб  було  впроваджено  опосередковане
       розгортання, після знаку оклику має бути одразу вказано ліву фігурну дужку.

       В  усіх  наведених  нижче  випадках  слово  підлягатиме  розгортанню  тильди,  розгортанню
       параметрів, заміні команд та арифметичним обчисленням.

       Якщо не виконуватиметься розгортання підрядків, з використанням документованих нижче  форм
       (наприклад,  :-),  bash виконує перевірку того, чи є параметр невстановленим або порожнім.
       Якщо не буде використано двокрапку, виконуватиметься перевірка лише на те, чи  є  параметр
       невстановленим.

       ${параметр:-слово}
              Використовувати  типові  значення.  Якщо значення параметра не буде встановлено або
              воно буде порожнім, буде підставлено  розгортання  слова.  У  інших  випадках  буде
              підставлено значення параметра.
       ${параметр:=слово}
              Призначити  типові  значення.  Якщо  значення  параметра  не  встановлено  або його
              значення є порожнім, для параметра буде встановлено  значення  слово.  Після  цього
              параметр буде замінено на значення параметра. У такий спосіб не можна встановлювати
              значення для позиційних і спеціальних параметрів.
       ${параметр:?слово}
              Показ помилки, якщо порожній або не встановлено. Якщо параметр має порожнє значення
              або  його  значення  не встановлено, розгортання слова (або повідомлення щодо цього
              ефекту, якщо слова немає) буде записано до стандартного потоку помилок, і оболонка,
              якщо  вона  не  є  інтерактивною,  завершить  роботу.  В  усіх  інших випадках буде
              підставлено параметр.
       ${параметр:+слово}
              Використати альтернативне значення. Якщо параметр має порожнє значення або значення
              параметра  не  встановлено, підставляння не виконуватиметься. В усіх інших випадках
              буде підставлено розгортання слова.
       ${параметр:відступ}
       ${параметр:відступ:довжина}
              Розгортання підрядка.  Буде  розгорнуто  до  довжина  символів  значення  параметр,
              починаючи  з  символу,  який  вказано значенням відступ. Якщо параметром є @ або *,
              індексований масив із підписом @ або * або назва  асоціативного  масиву,  результат
              буде  іншим,  описаним нижче. Якщо довжину не вказано, буде виконано розгортання до
              підрядка  значення  параметра,  що  починається  з  символу,  вказаного  аргументом
              відступ,   і  продовжується  до  кінця  значення.  Значення  довжина  і  відступ  є
              арифметичними виразами (див.  АРИФМЕТИЧНІ ОБЧИСЛЕННЯ нижче).

              Якщо обчисленим значенням відступу є від'ємне число, значення буде  використано  як
              відступ  у символах з кінця значення параметра. Якщо обчисленим значенням довжини є
              від'ємне число, його буде використано як відступ  у  символах  від  кінця  значення
              параметра,  а  не  кількість символів, а результатом розгортання будуть символи між
              значенням відступу і обчисленим значенням довжини. Зауважте, що  від'ємний  відступ
              має  бути  відокремлено  від  двокрапки принаймні одним пробілом, щоб його не можна
              було сплутати з розгортанням :-.

              Якщо параметром  є  @  або  *,  результатом  буде  довжина  позиційних  параметрів,
              починаючи  з  параметра  відступ.  Від'ємні  значення відступу буде відраховано від
              значення на одиницю більшого за найбільший позиційний параметр.  Отже,  відступ  -1
              визначає  останній позиційний параметр. Якщо обчисленим значенням аргументу довжина
              є від'ємне значення, програма повідомить про помилку розгортання.

              Якщо параметром є назва індексованого масиву із підписом @ або *, результатом  буде
              довжина  елементів  масиву,  починаючи  з  ${параметр[відступ]}.  Від'ємні значення
              аргументу  відступ  буде  відраховано  від  номера,  який  на  одиницю  більший  за
              максимальний індекс у вказаному масиві. Якщо обчисленим значенням аргументу довжина
              є від'ємне значення, програма повідомить про помилку розгортання.

              Застосоване  до  асоціативного  масиву  розгортання   підрядків   дає   невизначені
              результати.

              Відлік  елементів  у  підрядках  ведеться  від нуля, якщо не використано позиційних
              параметрів. У випадку  використання  позиційних  параметрів,  типово,  індексування
              починається  з  1.  Якщо  відступ  дорівнює 0 і використано позиційні параметри, до
              списку буде дописано префікс $0.

       ${!префікс*}
       ${!префікс@}
              Префікс відповідності назв. Буде розгорнуто до назв змінних, чиї назви  починаються
              з префікса. Записи назви буде відокремлено першим символом спеціальної змінної IFS.
              Якщо використано @ і розгортання  відбувається  у  подвійних  лапках,  кожну  назву
              змінної буде розгорнуто в окреме слово.

       ${!назва[@]}
       ${!назва[*]}
              Список  ключів  масиву.  Якщо  назва  є  змінною-масивом, буде розгорнуто до списку
              індексів (ключів) масиву, яким надано значення у масиві  назва.  Якщо  назва  не  є
              масивом,  буде розгорнуто у 0, якщо значення назва встановлено, і порожнє значення,
              якщо ні. Якщо використано @ і розгортання відбувається у  подвійних  лапках,  кожен
              ключ буде розгорнуто до окремого слова.

       ${#параметр}
              Довжина  параметра.  Буде  замінено  на довжину значення параметра у символах. Якщо
              параметром  є  *  або  @,  буде  замінено  кількістю  позиційних  параметрів.  Якщо
              параметром є назва масиву із підписом * або @, буде замінено на кількість елементів
              у масиві. Якщо параметр є назвою  індексованого  масиву  із  підписом  —  від'ємним
              числом, це число відраховуватиметься від більшого на одиницю за максимальний індекс
              параметра числа. Отже від'ємні індекси відраховуються від кінця масиву, а індекс -1
              відповідає останньому елементу масиву.

       ${параметр#слово}
       ${параметр##слово}
              Вилучення  префікса  за  взірцем.  Слово буде розгорнуто для отримання взірця, як у
              розгортанні шляхів. Отриманий взірець буде  використано  для  обробки  розгорнутого
              значення  параметра  з використанням правил, які описано у розділі Відповідність за
              взірцем нижче. Якщо взірець відповідатиме початку значення  параметра,  результатом
              розгортання  буде  розгорнуте  значення  параметра,  з  якого  вилучено найкоротший
              відповідний взірець (випадок «#») або найдовший відповідний взірець (випадок «##»).
              Якщо  параметром  є  @  або  *,  дію з вилучення взірця буде застосовано до кожного
              позиційного параметра послідовно,  і  результатом  розгортання  буде  список.  Якщо
              параметром  є  змінна-масив  із  підписом  @  або  *,  дію  з вилучення взірця буде
              застосовано до кожного елемента масиву послідовно, а результатом  розгортання  буде
              отриманий список.

       ${параметр%слово}
       ${параметр%%слово}
              Вилучення  суфікса  за  взірцем.  Слово  буде розгорнуто для отримання взірця, як у
              розгортанні шляхів. Отриманий взірець буде  використано  для  обробки  розгорнутого
              значення  параметра  з використанням правил, які описано у розділі Відповідність за
              взірцем  нижче.  Якщо  взірець   відповідатиме   завершенню   значення   параметра,
              результатом  розгортання  буде  розгорнуте  значення  параметра,  з  якого вилучено
              найкоротший відповідний взірець (випадок «%»)  або  найдовший  відповідний  взірець
              (випадок  «%%»). Якщо параметром є @ або *, дію з вилучення взірця буде застосовано
              до кожного позиційного параметра послідовно, і результатом розгортання буде список.
              Якщо  параметром  є  змінна-масив  із підписом @ або *, дію з вилучення взірця буде
              застосовано до кожного елемента масиву послідовно, а результатом  розгортання  буде
              отриманий список.

       ${параметр/взірець/рядок}
       ${параметр//взірець/рядок}
       ${параметр/#взірець/рядок}
       ${параметр/%взірець/рядок}
              Заміна за взірцем. Взірець буде розгорнуто у взірець, як у розгортанні шляхів. Буде
              розгорнуто параметр і замінено найдовший відповідник взірця у  значенні  на  рядок.
              Аргумент  рядок  підлягає  розгортанню  тильди,  розгортанню параметрів та змінних,
              арифметичним обчисленням,  підставлянню  команд  і  процесів  та  вилученню  лапок.
              Відповідність буде встановлено за правилами, які описано у розділі Відповідність за
              взірцем нижче. У першій формі вище буде  замінено  лише  перший  відповідник.  Якщо
              параметр  і  взірець  відокремлено двома символами похилої риски (друга форма вище,
              усі відповідники взірця буде замінено на рядок. Якщо взірець починається з # (третя
              форма  вище),  відповідність  має бути встановлено з початком розгорнутого значення
              параметра. Якщо взірець починається з % (четверта форма  вище),  відповідність  має
              бути  встановлено  наприкінці  розгорнутого  значення  параметра. Якщо розгортанням
              рядка є порожнє значення, відповідники взірця буде вилучено. Якщо рядок є порожнім,
              відповідники взірця буде вилучено, і / після взірця можна пропустити.

              Якщо  увімкнено  параметр  оболонки  patsub_replacement  за  допомогою  shopt,  усі
              екземпляри & у рядку рядок буде замінено відповідною частиною взірця.

              Взяття у лапки будь-якої частини рядка забороняє  заміну  у  розгортанні  взятої  у
              лапки  частини,  включно  із  заміною  рядків,  що зберігаються у змінних оболонки.
              Символ зворотної похилої риски екранує & у рядку; символ  зворотної  похилої  риски
              буде  вилучено  для  уможливлення  використання самого символу & у рядку заміннику.
              Також символом зворотної похилої риски можна скористатися для  екранування  символу
              зворотної  похилої  риски; використання \\ дає сам символ зворотної похилої риски у
              заміні. Користувачам слід подбати про подвійне взяття у лапки рядка,  щоб  уникнути
              небажаного  конфлікту  між екрануванням символом зворотної похилої риски і взяття у
              подвійні лапки, оскільки символ зворотної похилої риски має спеціальне  значення  у
              подвійних лапках. Засіб підставляння за взірцем виконує перевірку на & поза лапками
              після розгортання рядка; програмісти для коду оболонки мають брати у лапки  усі  &,
              які  має  бути  використано  буквально  у  заміннику і використати поза лапками усі
              екземпляри &, які має бути замінено.

              Якщо увімкнено параметр оболонки nocasematch, відповідність  буде  встановлено  без
              врахування   регістру  літерних  символів.  Якщо  параметром  є  @  або  *,  дію  з
              підставляння буде  застосовано  до  кожного  позиційного  параметра  послідовно,  а
              результатом  розгортання  буде оброблений список. Якщо параметром є змінна-масив із
              підписом @ або *, дію з підставляння буде застосовано до кожного елемента у  масиві
              послідовно, а результатом розгортання буде оброблений список.

       ${параметр^взірець}
       ${параметр^^взірець}
       ${параметр,взірець}
       ${параметр,,взірець}
              Зміна  регістру.  Це  розгортання  змінює  регістр  абеткових символів у параметрі.
              Взірець буде розгорнуто до взірця, як у розгортанні шляхів.  Кожен  із  символів  у
              розгорнутому  значенні  параметра  буде порівняно із взірцем і, якщо він відповідає
              взірцю, його регістр  буде  змінено.  Взірець  має  описувати  точно  один  символ.
              Оператор  ^  призведе  до  перетворення  літер  нижнього регістру, які відповідають
              взірцю,  на  літери  верхнього  регістру;  оператор  ,  призведе  до   перетворення
              відповідних літери верхнього регістру на літери нижнього регістру. Розгортання ^^ і
              ,, призведуть до перетворення усіх відповідних символів  у  розгорнутому  значення;
              розгортання  ^  і  , призведуть до перетворення лише першого символу у розгорнутому
              значенні. Якщо взірець вказано не буде, замість нього  буде  використано  ?,  тобто
              взірець  довільного  символу. Якщо параметром є @ або *, дію зі зміни регістру буде
              застосовано до кожного позиційного параметра послідовно, а результатом  розгортання
              буде  оброблений список. Якщо параметром є змінна-масив із підписом @ або *, дію зі
              зміни регістру  буде  застосовано  до  кожного  елемента  у  масиві  послідовно,  а
              результатом розгортання буде оброблений список.

       ${параметр@оператор}
              Перетворення  параметрів. Розгортанням буде або перетворення значення параметра або
              відомості щодо самого параметра, залежно  від  значення  оператора.  Усі  оператори
              складаються з однієї літери:

              U      Результатом  розгортання є рядок, який є значенням параметра, у якому літери
                     нижнього регістру (малі) замінено на відповідні їм літери верхнього регістру
                     (великі).
              u      Результатом  розгортання є рядок, який є значенням параметра, у якому перший
                     символ буде замінено на відповідну літеру верхнього регістру (велику),  якщо
                     перший символ є літерою.
              L      Результатом  розгортання є рядок, який є значенням параметра, у якому літери
                     верхнього регістру  (великі)  замінено  на  відповідні  їм  літери  нижнього
                     регістру (малі).
              Q      Результатом  розгортання  є рядок, який є значенням параметра, у якому вміст
                     нейтралізовано до формату, який можна використати як вхідні дані.
              E      Результатом розгортання  є  рядок,  який  є  значенням  параметра,  у  якому
                     екрановані послідовності із символом зворотної похилої риски буде розгорнуто
                     так, як у механізмі нейтралізації $'...'.
              P      Результатом розгортання є рядок,  який  є  розгортанням  параметра  у  такий
                     спосіб, наче він є рядком запиту (див. ЗАПИТИ нижче).
              A      Розгортанням є рядок у формі інструкції зі встановлення значення або команди
                     declare, яка, якщо її виконати, повторно створить параметр з його атрибутами
                     і значенням.
              K      Дає,   можливо,  нейтралізовану  версію  значення  параметра,  але  виводить
                     значення   індексованих   або   асоціативних   масивів   як    послідовність
                     нейтралізованих пар ключ-значення (див. Масиви вище).
              a      Розгортанням   буде   рядок,   що   складається  зі  значень  прапорців,  що
                     відповідають атрибутам параметра.
              k      Подібне до K-перетворення, але розгортає ключі  і  значення  індексованих  і
                     асоціативних масивів в окремі слова після поділу на слова.

              Якщо  параметром  є  @ або *, дію буде застосовано до кожного позиційного параметра
              послідовно, а результатом розгортання буде оброблений  список.  Якщо  параметром  є
              змінна-масив із підписом @ або *, дію буде застосовано до кожного елемента у масиві
              послідовно, а результатом розгортання буде оброблений список.

              Результат розгортання розгортання буде поділено на слова  і  застосовано  до  нього
              розгортання шляхів у описаний нижче спосіб.

   Заміна команд
       Заміна  команд  уможливлює заміну назви команди на результат її виконання. Передбачено дві
       форми:

              $(команда)
       або
              `команда`

       Bash виконує розгортання, виконавши команду у середовищі підоболонки і  замінивши  команду
       на  стандартне  виведення  команди  із  вилученням  усіх  кінцевих  символів нового рядка.
       Вбудовані нові рядки не буде вилучено, але їх може бути вилучено під час поділу на  слова.
       Заміну команди $(cat файл) може бути замінено еквівалентним, але швидшим, $(< файл).

       Якщо  використано  стару  форму  заміни  із  використанням зворотного апострофа, зворотний
       апостроф зберігає своє буквальне значення, якщо після нього не вказано $, ` або \.  Перший
       зворотний  апостроф,  перед  яким  немає  символу зворотної похилої риски, завершує заміну
       команди. Якщо використано форму $(команда), усі символи у дужках складають команду;  жоден
       з цих символів не підлягатиме особливій обробці.

       Заміна  команд  може  бути  вкладеною.  Для  створення  вкладеності  у  формі зі зворотним
       апострофом екрануйте внутрішні зворотні апострофи символами зворотних похилих рисок.

       Якщо заміну взято у подвійні лапки, до результатів не буде застосовано поділ на  слова  та
       розгортання шляхів.

   Арифметичні обчислення
       За  допомогою  арифметичних  обчислень  можна  визначати  значення  арифметичного виразу і
       підставляти до команди результат. Формат арифметичних обчислень є таким:

              $((вираз))

       Старий формат $[вираз] вважається застарілим. Його буде вилучено у майбутніх версіях bash.

       Вираз підлягає тим самим розгортанням, що і вираз, якщо його взято у подвійні  лапки,  але
       подвійні   лапки   у   дужках  не  оброблятимуться  якимось  спеціальним  чином  і  просто
       вилучатимуться. Усі елементи у виразі підлягатимуть  розгортанню  параметрів  та  змінних,
       заміні  команд  та вилученню нейтралізації. Результат буде оброблено як арифметичний вираз
       для обчислення. Арифметичні обчислення можуть бути вкладеними.

       Обчислення буде виконано відповідно до наведених нижче у  розділі  АРИФМЕТИЧНІ  ОБЧИСЛЕННЯ
       правил. Якщо вираз є некоректним, bash виведе повідомлення, що вказуватиме на помилку і не
       виконуватиме підставляння результату обчислень.

   Заміна процесу
       За допомогою заміни процесів можна посилатися на вхідні і вихідні канали процесів,  як  на
       назви  файлів.  Заміну процесів записують у формі <(список) або >(список). Список процесів
       буде запущено асинхронно, а якого вхідний і вихідний канали стануть доступними через назву
       файла.  У  результаті  заміни,  цю назву файла буде передано як аргумент поточній команді.
       Якщо використано форму >(список), запис до файла буде вхідним  каналом  для  списку.  Якщо
       використано форму <(список), слід буде виконати читання файла, переданого як аргумент, щоб
       отримати доступ до  вихідного  каналу  списку.  Підтримку  заміни  процесу  передбачено  у
       системах,  у  яких  є  підтримка  іменованих  каналів (FIFO) або методу /dev/fd іменування
       відкритих файлів.

       Коли можливо, заміна процесу виконується одночасно з розгортанням  параметрів  і  змінних,
       заміною команд та арифметичними обчисленнями.

   Поділ на слова
       Оболонка сканує результати розгортання параметрів, заміни команд і арифметичних обчислень,
       які не було виконано всередині подвійних лапок для поділу на слова.

       Оболонка вважає кожен символ IFS роздільником і  ділить  результати  інших  розгортань  на
       слова  із  використанням  цих символів як меж полів. Якщо значення IFS не встановлено, або
       його значенням є точно  <space><tab><newline>,  типове  значення,  послідовності  <space>,
       <tab>  і  <newline>  на  початку  або  наприкінці  результатів  попередніх розгортань буде
       проігноровано, а будь-які послідовності символів IFS не на початку і  не  у  кінці  будуть
       слугувати  як  межі слів. Якщо IFS має нетипове значення, послідовності символів-пропусків
       space, tab і newline буде  проігноровано  на  початку  і  наприкінці  слова,  якщо  символ
       пропуску  є  у  значенні  IFS  (символ-пропуск  IFS).  Будь-який  символ  в IFS, який не є
       пропуском IFS, разом із будь-якими сусідніми символами-пропусками  IFS,  відмежовує  поле.
       Послідовність  символів-пропусків  IFS  також  вважатиметься  межею.  Якщо  значення IFS є
       порожнім, поділ на слова не відбуватиметься.

       Явні порожні аргументи ("" or '') буде збережено і  передано  команди  як  порожні  рядки.
       Ненейтралізовані  неявні  порожні аргументи, які є результатом розгортання параметрів, які
       не мають значень, буде вилучено. Якщо параметр без значення буде  розгорнуто  у  подвійних
       лапках,  буде  отримано  порожній  аргумент;  його  буде  збережено  і передано команді як
       порожній  рядок.  Якщо  нейтралізований  порожній  аргумент  буде  частиною   слова,   чиє
       розгортання  не є порожнім, порожній аргумент буде вилучено. Таким чином, слово -d'' дасть
       -d після поділу на слова і вилучення порожніх аргументів.

       Зауважте, що якщо розгортання не відбуватиметься, поділ на слова також не відбуватиметься.

   Розгортання шляхів
       Після поділу на слова, якщо не встановлено параметра -f, bash виконує пошук у  кожному  зі
       слів символів *, ? і [. Якщо буде виявлено один із цих символів, і його не нейтралізовано,
       слово вважатиметься взірцем — його буде замінено на упорядкований за абеткою  список  назв
       файлів,  які  відповідають взірцю (див.  Відповідність за взірцем нижче). Якщо відповідних
       назв файлів знайдено не буде, і  не  увімкнено  параметр  оболонки  nullglob,  слово  буде
       вставлено  до  команди без змін. Якщо встановлено параметр nullglob, і не знайдено жодного
       відповідника, слово буде вилучено. Якщо  встановлено  параметр  failglob,  і  не  знайдено
       відповідників,  буде  виведено  повідомлення про помилку, а команду не буде виконано. Якщо
       увімкнено параметр оболонки nocaseglob, відповідність встановлюватиметься  без  врахування
       регістру  абеткових  символів. Зауважте, що при використанні діапазонних виразів, подібних
       до [a-z], (див. нижче), може бути включено літери іншого регістру,  залежно  від  значення
       LC_COLLATE.  Якщо  взірець використано для розгортання шляхів, символ на початку “.” назви
       або одразу після символу похилої риски має відповідати рядку  явно,  якщо  не  встановлено
       параметр  оболонки  dotglob.  Щоб було встановлено відповідність назвам файлів “.” і “..”,
       взірець має починатися з “.”  (приклад:  “.?”),  навіть  якщо  встановлено  dotglob.  Якщо
       увімкнено  параметр  оболонки  globskipdots,  відповідність  назвам  файлів  “.” і “..” не
       встановлюватиметься ніколи, навіть якщо взірець  починається  з  “.”.  Якщо  відповідність
       встановлюється  не  для  шляхів,  особливої  обробки “.” не відбувається. При встановленні
       відповідності шляхів символ похилої риски має бути відповідним явним чином похилій рисці у
       взірці,  але  в  інших  контекстах  відповідності  він  може  бути відповідним спеціальним
       символом взірця, як описано нижче у розділі Відповідність  за  взірцем.  Див.  опис  shopt
       нижче у розділі ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ, щоб ознайомитися із описом параметрів оболонки
       nocaseglob, nullglob, globskipdots, failglob і dotglob.

       Для обмеження набору назв файлів, які  відповідають  взірцю,  можна  скористатися  змінною
       оболонки  GLOBIGNORE. Якщо встановлено змінну GLOBIGNORE, усі відповідні назви файлів, які
       також відповідають одному із взірців у GLOBIGNORE буде вилучено зі  списку  відповідників.
       Якщо    встановлено    параметр    nocaseglob,    відповідність   взірцям   у   GLOBIGNORE
       встановлюватиметься без врахування регістру символів. Назви файлів “.” і “..” буде  завжди
       проігноровано,   якщо   встановлено  непорожнє  значення  GLOBIGNORE.  Втім,  встановлення
       непорожнього значення GLOBIGNORE призведе до вмикання параметри  оболонки  dotglob,  отже,
       відповідними вважатимуться усі інші назви файлів, що починаються з “.”. Щоб отримати стару
       поведінку з ігноруванням назв файлів, що починаються з “.”, зробіть “.*” одним із  взірців
       у GLOBIGNORE. Параметр dotglob буде вимкнено, якщо не встановлено значення GLOBIGNORE. При
       встановленні відповідності взірцю буде взято до уваги значення параметра оболонки extglob.

       Відповідність за взірцем

       Будь-який символ, який з’являється у взірці, окрім спеціальних символів  взірця,  описаних
       нижче,  збігається сам із собою. Символ NUL може не зустрічатися у взірці. Зворотна похила
       риска екранує наступний символ; при збігу зворотна похила риска  відкидається.  Спеціальні
       символи взірця слід уводити в лапках, якщо вони мають відповідати буквально.

       Спеціальні символи взірців мають таке значення:

              *      Збігається  з  будь-яким  рядком,  включаючи  нульовий  (null)  рядок.  Якщо
                     увімкнено параметр оболонки globstar і в контексті  розширення  назви  шляху
                     використовується   *,   дві   *   поруч,   використані  як  єдиний  взірець,
                     відповідатимуть усім файлам і нулю або більше каталогів і підкаталогів. Якщо
                     далі йде /, дві * поруч відповідатимуть лише каталогам і підкаталогам.
              ?      Відповідає будь-якому одинарному символу.
              [...]  Відповідає  будь-якому  зі  вкладених  символів.  Пара  символів, розділених
                     дефісом,  позначає  вираз  діапазону;  відповідає  будь-якому  символу,   що
                     міститься  між  цими  двома символами включно, з використанням послідовності
                     порівняння поточної локалі та набору символів. Якщо першим після [ є  символ
                     !  або ^, то відповідає будь-якому не вкладеному символу. Порядок сортування
                     символів у виразі діапазону і символах, включених до діапазону, визначається
                     поточним  мовним  стандартом  і  значеннями  змінних оболонки LC_COLLATE або
                     LC_ALL, якщо їх встановлено. Для отримання традиційної інтерпретації виразів
                     діапазону,  де  [a-d]  еквівалентне  [abcd], встановіть для змінної оболонки
                     LC_ALL значення C, або увімкніть параметр оболонки globasciiranges. -  можна
                     увідповіднити, включивши його в набір як перший або останній символ. ] можна
                     увідповіднити, включивши в набір як перший символ.

                     Між [ і  ]  можна  вказувати  класи  символів  у  формі  такої  синтаксичної
                     конструкції:   [:клас:],  де  клас  є  одним  із  вказаних нижче класів, які
                     визначено у стандарті POSIX:
                     alnum alpha ascii blank cntrl digit graph lower print punct space upper word
                     xdigit
                     Клас  символів  відповідає  будь-якому  символу,  що  належить  класу.  Клас
                     символів word відповідає літерам, цифрам та символам _.

                     Між [ і ]  можна  задати  клас  еквівалентності,  скориставшись  синтаксисом
                     [=c=],  який  відповідає  всім  символам  з  такою  ж  вагою зіставлення (як
                     визначено поточним мовним стандартом), що й символ c.

                     Між [ і ], синтаксису [.символ.] відповідає символ зіставлення символ.

       Якщо параметр оболонки extglob увімкнено за допомогою вбудованої команди  shopt,  оболонка
       розпізнає   кілька   розширених   операторів  відповідності  взірцю.  В  подальшому  описі
       список_взірців - це список із одного або кількох взірців, розділених символом |.  Складені
       взірці можна сформувати за допомогою одного або кількох із таких підвзірців:

              ?(список_взірвців)
                     Відповідає нульовій або одинарній кількості відповідників вказаних взірців
              *(список_взірвців)
                     Відповідає нулю, одному або декільком збігам із заданим взірцем
              +(список_взірців)
                     Відповідає одному або декільком збігам із заданим взірцем
              @(списо_взірців)
                     Відповідає одному з заданих взірців
              !(список_взірців)
                     Відповідає усьому, окрім одного з заданих взірців

       Параметр   extglob   змінює   поведінку  обробника,  оскільки  зазвичай  дужки  вважаються
       операторами із синтаксичним значенням. Щоб розширені взірці відповідності  було  оброблено
       належним  чином,  слід  увімкнути  extglob  до  обробки конструкцій, що містять ці взірці,
       включно із функціями оболонки та підставлянням команд.

       При встановленні відповідності назв файлів параметр оболонки dotglob визначає  набір  назв
       файлів,  перевірку  яких  слід виконати: якщо увімкнено dotglob, набір назв файлів включає
       усі файли, назви яких починаються з “.”, але  “.”  і  “..”  слід  шукати  за  взірцем  або
       підвзірцем,  що  починається з крапки; якщо його вимкнено, набір не включатиме жодних назв
       файлів, які починаються з “.”, якщо взірець або підвзірець не  починається  з  “.”.  Як  і
       вище, “.” має особливе призначення при встановленні відповідності назв файлів.

       Зіставлення  складних розширених взірців із довгими рядками виконується повільно, особливо
       коли взірці містять чергування, а рядки містять кілька збігів. Використання окремих збігів
       для коротших рядків або використання масивів рядків замість одного довгого рядка може бути
       швидшим.

   Вилучення лапок
       Після попередніх розгортань усі ненейтралізовані послідовності символів \, ' і ",  які  не
       були результатом вказаних вище розгортань, буде вилучено.

ПЕРЕСПРЯМОВУВАННЯ

       Перш  ніж  команду  буде  виконано,  її вхід і вихід може бути переспрямовано за допомогою
       спеціальних позначень, які обробляє оболонка. За допомогою переспрямувань можна дублювати,
       відкривати, закривати, замінювати на посилання на інші файли дескриптори файлів команди, а
       також змінювати файли, з яких програма читатиме дані і до  яких  вона  записуватиме  дані.
       Також  переспрямуваннями  можна  скористатися  для  внесення змін до дескрипторів файлів у
       поточному середовищі виконання оболонки. Описані нижче оператори переспрямовування  можуть
       передувати   простій  команді,  бути  розташованими  у  ній  або  слідувати  за  командою.
       Переспрямування буде оброблено у вказаному у команді порядку, зліва праворуч.

       Перед кожним переспрямуванням, перед яким можна вказати  номер  дескриптора  файла,  можна
       також  вказати  слово  у  формі  {назва-змінної}.  У таких випадках, для кожного оператора
       переспрямування, окрім >&- і <&-,  оболонка  розмістить  у  пам'яті  дескриптор  файла  із
       номером, що перевищує 9, і встановить для нього значення назва-змінної. Якщо перед >&- або
       <&- буде вказано {назва-змінної}, значення  назва-змінної визначить дескриптор файла, який
       слід  закрити.  Якщо  вказано  аргумент  {назва-змінної},  переспрямування  працюватиме за
       областю дії команди, що надає змогу програмісту оболонки керувати самим дескриптором файла
       вручну. Цією поведінкою керує параметр оболонки varredir_close.

       У  наведених  нижче  описах,  якщо  не вказано номера дескриптора файла, і першим символом
       оператора переспрямування є <, переспрямування буде виконано зі  із  стандартного  джерела
       вхідних даних (файлом із дескриптором 0). Якщо першим символом оператора переспрямування є
       >, переспрямування буде виконано до стандартного виведення (файла із дескриптором 1).

       Слово, яке слідує за оператором переспрямування у наведених нижче описах, якщо  окремо  не
       написано іншого, підлягає розгортанню у дужках, розгортанню тильди, розгортанню параметрів
       та змінних, заміні команд, арифметичним обчисленням, вилученню нейтралізації,  розгортанню
       шляхів та поділу на слова. Якщо у результаті розгортання буде отримано декілька слів, bash
       повідомить про помилку.

       Зауважте, що порядок переспрямувань має значення. Наприклад, команда

              ls > dirlist 2>&1

       спрямовує стандартне виведення та стандартне виведення помилок до файла dirlist, а команда

              ls 2>&1 > dirlist

       спрямовує лише стандартне  виведення  до  файла  dirlist,  оскільки  стандартне  виведення
       помилок  було  дубльовано  зі стандартного виведення до того, як стандартне виведення було
       переспрямовано до файла dirlist.

       Деякі назви файлів при використанні переспрямувань bash обробляє по-особливому, так, як це
       описано  у  наведеній  нижче таблиці. Якщо операційна система, у якій запущено bash, надає
       доступ до цих спеціальних файлів, bash скористається ними. Якщо ні, bash емулюватиме їх на
       внутрішньому рівні, скориставшись поведінкою, яку описано нижче.

              /dev/fd/дескриптор_файла
                     Якщо  дескриптор_файла є коректним цілим числом, буде здубльовано дескриптор
                     файла дескриптор_файла.
              /dev/stdin
                     Буде здубльовано дескриптор файла 0.
              /dev/stdout
                     Буде здубльовано дескриптор файла 1.
              /dev/stderr
                     Буде здубльовано дескриптор файла 2.
              /dev/tcp/вузол/порт
                     Якщо вузол є коректною назвою вузла або інтернет-адресою,  і  порт  є  цілим
                     числом  — номером порту або назвою служби, bash спробує відкрити відповідний
                     сокет TCP.
              /dev/udp/вузол/порт
                     Якщо вузол є коректною назвою вузла або інтернет-адресою,  і  порт  є  цілим
                     числом  — номером порту або назвою служби, bash спробує відкрити відповідний
                     сокет UDP.

       Неможливість відкрити або створити файл спричиняє помилку переспрямовування.

       Переспрямовуванням із використанням дескрипторів файлів,  номер  яких  перевищує  9,  слід
       користуватися  із  обережністю,  оскільки  вони можуть конфліктувати із дескрипторами, які
       оболонка використовує на внутрішньому рівні.

       Зауважте, що вбудована команда exec може переспрямовувати дані у поточній оболонці.

   Переспрямування введення
       Переспрямування вхідних даних призведе  до  того,  що  файл,  назва  якого  є  результатом
       розгортання  слова,  буде  відкрито для читання на дескрипторі файла n або на стандартному
       введенні (файла з дескриптором 0), якщо n не вказано.

       Загальний формат для переспрямування вводу такий:

              [n]<слово

   Переспрямування виведення
       Переспрямування виведених даних призведе до того,  що  файл,  назва  якого  є  результатом
       розгортання  слова,  буде  відкрито для читання на дескрипторі файла n або на стандартному
       виведенні (файла з дескриптором 1), якщо n не вказано. Якщо  файла  не  існує,  його  буде
       створено; якщо він існує, його буде обрізано до нульового розміру.

       Загальний формат для переспрямування виводу такий:

              [n]>слово

       Якщо оператором переспрямування є > і було увімкнено параметр noclobber вбудованої команди
       set, спроба переспрямовування завершиться помилкою, якщо файл, назву якого буде  визначено
       шляхом розгортання слова, існує і є звичайним файлом. Якщо оператором переспрямування є >|
       або оператором переспрямування є > і не увімкнено параметр noclobber у вбудованій  команді
       set,  буде  виконано  спробу  пересрямовування,  навіть  якщо файл із назвою, яку отримано
       розгортанням слова, існує.

   Дописування переспрямованого виведення
       Переспрямування виведення  у  цей  спосіб  призведе  до  того,  що  файл,  назва  якого  є
       результатом розгортання слова, буде відкрито для дописування на дескрипторі файла n або на
       стандартному виведенні (файла з дескриптором 1), якщо n не вказано. Якщо файла  не  існує,
       його буде створено.

       Загальним форматом для дописування виведення є такий:

              [n]>>слово

   Переспрямування стандартного виводу та стандартних помилок
       Ця конструкція уможливлює переспрямовування і стандартного виведення (дескриптор файла 1),
       і стандартного виведення помилок (дескриптор файла 2) до файла, чиєю назвою є  розгортання
       слова слово.

       Існує два формати переспрямування стандартного виводу та стандартних помилок:

              &>слово
       і
              >&слово

       З двох форм пріоритетною є перша. Семантично це еквівалентно до

              >слово 2>&1

       Якщо  використано  другу  форму,  слово  не  зможе  розгорнутися до числа або -. Якщо воно
       розгортається, з міркувань  сумісності  застосовуються  інші  оператори  переспрямовування
       (див. Дублювання дескрипторів файлів).

   Дописування стандартного виводу та стандартних помилок
       Ця  конструкція  уможливлює  дописування  і стандартного виведення (дескриптор файла 1), і
       стандартного виведення помилок (дескриптор файла 2) до файла, чиєю  назвою  є  розгортання
       слова слово.

       Форматуванням  для  дописування  стандартного виведення і стандартного виведення помилок є
       таке форматування:

              &>>слово

       Семантично це еквівалентно до

              >>слово 2>&1

       (див. Дублювання дескрипторів файлів нижче).

   Контекстні документи
       Цей тип переспрямовування вказує оболонці, що  слід  прочитати  вхідні  дані  з  поточного
       джерела,  аж  до  рядка,  що  містить лише роздільник (без кінцевих пропусків). Згодом, як
       стандартне джерело вхідних даних (або дескриптор файла n, якщо вказано n) для команди буде
       використано усі рядки аж до цієї позиції.

       Формат контекстних документів:

              [n]<<[-]слово
                      контекстний документ
              роздільник

       У  слові  слово  не  буде  виконано  розгортання  параметрів  і  змінних,  заміни  команд,
       арифметичних обчислень та розгортання шляхів. Якщо  якусь  частину  слова  слово  взято  у
       лапки,  роздільником  буде  результат  вилучення  лапок  зі  слова,  а  рядки контекстного
       документа  не  розгортатимуться.  Якщо  слово  не  буде  взято  у  лапки,  в  усіх  рядках
       контекстного   документа   виконуватиметься   розгортання  параметрів,  заміни  команд  та
       арифметичні обчислення, послідовність символів \<новий рядок> буде  проігноровано,  а  для
       нейтралізації символів  \, $ і ` слід використовувати \.

       Якщо  оператором  переспрямовування  є  <<-,  з  вхідних  рядків  буде  прибрано початкові
       табуляції та рядки, що  містять  роздільник.  Це  уможливлює  належні  відступи  у  рядках
       контекстного документа у скриптах оболонки.

   Контекстні рядки
       Варіант контекстних документів. Форматування:

              [n]<<<слово

       Слово  підлягає  розгортанню  тильди,  розгортанню  параметрів  і  змінних, заміні команд,
       арифметичним обчисленням та вилученню нейтралізації. Розгортання шляхів і поділ  на  слова
       не  виконуватимуться.  Результат  буде  надано  як  єдиний  рядок із додаванням наприкінці
       символу нового рядка до команди у її стандартне  джерело  вхідних  даних  (або  у  файл  з
       дескриптором n, якщо вказано n).

   Дублювання дескрипторів файлів
       Оператор переспрямовування

              [n]<&слово

       використовують  для дублювання дескрипторів файлів вхідних даних. Якщо слово розгортається
       до однієї або декількох цифр,  дескриптор  файла  із  позначенням  n  стане  копією  цього
       дескриптора  файла.  Якщо  цифри  у  слові  не задають дескриптор файла, який відкрито для
       введення даних, станеться помилка переспрямування. Якщо обчисленим значенням  слова  є  -,
       дескриптор  файла  n  буде закрито. Якщо n не вказано, буде використано стандартне джерело
       вхідних даних (файл із дескриптором 0).

       Оператор

              [n]>&слово

       використовують у подібний спосіб для дублювання дескрипторів  файлів  виведення.  Якщо  не
       вказано  n,  буде  використано стандартне виведення (файл із дескриптором 1). Якщо цифри у
       слові не задають  дескриптора  файла,  який  відкрито  для  виведення,  станеться  помилка
       переспрямування. Якщо обчисленим значенням слова є -, файл із дескриптором n буде закрито.
       У особливому випадку, якщо не вказано n, і розгортанням слова не є одна або декілька  цифр
       або  -, стандартне виведення і стандартне виведення помилок буде переспрямовано у описаний
       раніше спосіб.

   Пересування дескрипторів файлів
       Оператор переспрямовування

              [n]<&цифра-

       пересуває дескриптор файла цифра до дескриптора файла n або стандартного  джерела  вхідних
       даних (дескриптор файла 0), якщо n не вказано. цифра буде закрито після дублювання до n.

       Так само, оператор переспрямовування

              [n]>&цифра-

       пересуває  дескриптор  файла  цифра  до  дескриптора  файла  n  або стандартного виведення
       (дескриптор файла), якщо n не вказано.

   Відкриття дескрипторів файлів для читання і запису
       Оператор переспрямовування

              [n]<>слово

       спричиняє відкриття файла, чия назва визначається розгортанням слова слово, для читання  і
       запису  на  дескрипторі файла n або відкриття дескриптора файла 0, якщо n не вказано. Якщо
       файла не існує, його буде створено.

АЛЬТЕРНАТИВИ

       За допомогою альтернатив можна замінити рядок на слово, якщо рядок  використано  як  перше
       слово простої команди. В оболонці передбачено список альтернатив, які можна встановити або
       скасувати за допомогою вбудованих команд alias і unalias (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ
       нижче).  Перше  слово кожної простої команди, якщо його не нейтралізовано, буде перевірено
       на належність до альтернатив. Якщо буде виявлено, що слово є альтернативою, це слово  буде
       замінено  на  текст альтернативи. У назві альтернативи не можна використовувати символи /,
       $, ` та =, а також будь-які метасимволи або оболонки  або  символи  нейтралізації,  список
       яких  наведено  вище.  Текст  заміни  може містити будь-які коректні вхідні дані оболонки,
       зокрема метасимволи оболонки. Перше слово тексту заміни буде перевірено на  належність  до
       альтернатив,  але  слово,  яке  збігається  із  альтернативою,  яка розгортається, не буде
       розгорнуто вдруге. Це означає, що можна, наприклад, використати альтернативу ls для ls -F,
       і bash не намагатиметься рекурсивно розгортати текст заміни. Якщо останній символ значення
       альтернативи є пропуском, наступне слово команди за альтернативою також буде перевірено на
       можливість розгортання альтернативи.

       Альтернативи   можна  створити  або  переглянути  за  допомогою  команди  alias.  Вилучити
       альтернативи можна за допомогою команди unalias.

       Механізму використання аргументів у тексті заміни не передбачено. Якщо потрібні аргументи,
       скористайтеся функцією оболонки (див.  ФУНКЦІЇ нижче).

       Розгортання   альтернатив  не  виконуватиметься  для  неінтерактивної  оболонки,  якщо  не
       встановлено параметра оболонки expand_aliases  за  допомогою  shopt  (див.  опис  shopt  у
       розділі ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).

       Правила,  які  стосуються  визначення і використання альтернатив, є дещо заплутаними. Bash
       завжди читає принаймні один повний рядок вхідних даних і усі  рядки,  з  яких  складається
       складена команда, перш ніж виконувати будь-яку команду у цьому рядку або складену команду.
       При читанні, а не при виконанні, команди альтернативи  буде  розгорнуто.  Тому  визначення
       альтернативи  у тому самому рядку, що і інша команда, не працюватиме до читання наступного
       рядка вхідних даних. Нові альтернативи не буде використано у  командах,  які  слідують  за
       визначенням  альтернативи  в  одному  рядку. Така поведінка може також стати проблемою при
       виконанні функцій. Розгортання альтернатив відбуватиметься при читанні визначення функцій,
       а  не  при  виконанні  функцій,  оскільки визначення функції саме є командою. Як наслідок,
       альтернативи, які визначено у функції, є  недоступними  до  виконання  цієї  функції.  Щоб
       уникнути  проблем,  завжди  визначайте  альтернативи  в окремому рядку і не використовуйте
       alias у складених командах.

       Майже усюди альтернативи можна замінити функціями оболонки.

ФУНКЦІЇ

       У функції оболонки, яку визначено у описаний вище у  розділі  ГРАМАТИКА  ОБОЛОНКИ  спосіб,
       зберігається  послідовність  команд,  яку можна будь-коли виконати. Якщо використати назву
       функції як назву простої команди, буде виконано  список  команд,  які  пов'язано  із  цією
       функцією.  Функції  буде  виконано  у контексті поточної оболонки; система не створюватиме
       процес для їхньої обробки (на відміну від виконання скрипту оболонки). Під  час  виконання
       функції  аргументами будуть позиційні параметра на момент виконання. Для відтворення зміни
       буде оновлено спеціальний параметр #.  Спеціальний  параметр  0  лишиться  незмінним.  Для
       першого елемента змінної FUNCNAME на час виконання функції буде встановлено значення назви
       функції.

       Усі інші аспекти середовища виконання оболонки є однаковими для функції і скрипту, з якого
       її  викликано,  із  такими  винятками: пастки DEBUG і RETURN (див. опис вбудованої команди
       trap у розділі ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче) не  буде  успадковано,  якщо  функції  не
       передано  атрибут trace (див. опис вбудованої команди declare нижче) або не буде увімкнено
       параметр оболонки -o functrace за допомогою вбудованої команди set (у  цьому  випадку  усі
       функції  успадкують  пастки  DEBUG  і  RETURN),  а пастку ERR не буде успадковано, якщо не
       увімкнено параметр оболонки -o errtrace.

       Змінні, локальні для функції, можна оголосити за допомогою вбудованої команди local (local
       variables).  Зазвичай  змінні  та  їх значення спільні між функцією та її викликачем. Якщо
       змінну було оголошено як  local,  область  видимості  змінної  буде  обмежено  відповідною
       функцією та її дочірніми (включно із функціями, які вона викликає).

       У наведеному нижче описі поточною областю видимості є функція, виконання якої відбувається
       у поточний момент  часу.  Попередні  області  видимості  складаються  з  функції,  з  якої
       викликано  цю  функцію,  та попередніх функцій у стосі викликів, аж до «загальної» області
       видимості, де оболонка не виконує жодної  функції  оболонки.  Далі,  локальною  змінною  у
       поточній  області  видимості  є змінна, яку оголошено за допомогою вбудованих команд local
       або declare у функції, виконання якої відбувається у поточний момент.

       Локальні змінні «затіняють» змінні із тими самими  назвами,  які  оголошено  у  попередніх
       областях видимості. Наприклад, локальна змінна, яку оголошено у функції, приховує загальну
       змінну із тією самою назвою: посилання та встановлення значень  стосуватимуться  локальної
       змінної,  а  загальна  змінна лишиться незмінною. При поверненні з функції загальна змінна
       знову стає видимою.

       Оболонка використовує динамічне визначення  областей  видимості  для  керування  видимістю
       змінних  у функціях. При динамічному визначенні перелік видимих змінних та їхні значення є
       результатом послідовності викликів функцій, яка спричинила досягнення у процесі  виконання
       поточної  функції.  Значення змінної, яке бачить функція, залежить від її значення у місці
       виклику, якщо  таке  визначено,  того,  перебуває  місце  виклику  у  «загальній»  області
       видимості  чи  у  іншій  функції  оболонки.  Також,  це  значення,  яке «затіняє» локальне
       оголошення змінної, і значення, яке відновлено при поверненні з функції.

       Наприклад, якщо змінну змінна оголошено як локальну у функції функція1, і функція функція1
       викликає  іншу  функцію  функція2, посилання на змінна, які використано у функція2, дадуть
       локальну змінну змінна з функція1, яка затіняє будь-яку загальну змінну із назвою змінна.

       Вбудована команда unset  також  працює  з  використанням  тієї  самої  динамічної  області
       видимості:   якщо  змінна  є  локальною  для  поточної  області  видимості,  unset  скасує
       встановлення значення для неї; якщо ж ні, скасування значення стосуватиметься змінної, яку
       виявлено у будь-якій області видимості, звідки викликано функцію, як це описано вище. Якщо
       значення змінної  у  поточній  локальній  області  видимості  не  встановлено,  нічого  не
       зміниться (виглядатиме як невстановлена), аж доки значення у відповідній області видимості
       не буде встановлено або не  буде  виконано  повернення  з  функції.  Щойно  буде  виконано
       повернення  з  функції,  будь-який  екземпляр змінної у попередній області видимості стане
       видимим. Якщо скасування встановлення значення спрацює для змінної  у  попередній  області
       видимості,  будь-який  екземпляр  змінної  із тією самою назвою, який було затінено, стане
       знову видимим  (див.  нижче  щодо  того,  як  змінна  оболонки  localvar_unset  змінює  цю
       поведінку).

       Змінна  FUNCNEST,  якщо встановлено числове додатне значення, визначає максимальний рівень
       вкладеності  функцій.  Виклики  функцій,  у  яких  перевищено  обмеження,  призводять   до
       аварійного завершення виконання усієї команди.

       Якщо  у функції буде виконано вбудовану команду return, виконання функції буде завершено і
       оболонка перейде до виконання наступної після виклику функції команди.  Перед  поновленням
       виконання  буде  виконано усі команди, які пов'язано із пасткою RETURN. Під час завершення
       роботи функції буде відновлено значення, які мали перед виконанням функції  усі  позиційні
       параметри та особливий параметр #.

       Отримати список назв і визначень функцій можна за допомогою параметра -f вбудованих команд
       declare і typeset. Використання параметра -F вбудованих команд declare і typeset  призведе
       до  виведення  списку  лише назв функцій (і, необов'язково, файла-джерела та номера рядка,
       якщо увімкнено параметр оболонки extdebug). Функції можна експортувати так,  щоб  їх  було
       автоматично  визначено  у  дочірніх  процесах  оболонки  (процесах,  які  створено під час
       виконання окремих викликів оболонки), — скористайтеся  параметром  -f  вбудованої  команди
       export.  Визначення  функції  можна  вилучити за допомогою параметра -f вбудованої команди
       unset.

       Функції можуть  бути  рекурсивними.  Для  обмеження  глибини  стека  викликів  функції  та
       кількості  викликів  функцій  можна  скористатися  змінною  FUNCNEST.  Типово, обмежень на
       кількість рекурсивних викликів не накладається.

АРИФМЕТИЧНЕ ОЦІНЮВАННЯ

       Оболонка, за певних умов, уможливлює арифметичні обчислення (див. вбудовані команди let  і
       declare,  складену команду (( та Арифметичні обчислення). Обчислення буде виконано у цілих
       числах із фіксованою шириною без  перевірок  на  переповнення,  хоча  ділення  на  0  буде
       перехоплено  із  повідомленням про помилку. Оператори, їхня пріоритетність, асоціативність
       та значення є тими самими, що і у мові C. Нижче наведено список операторів, які згруповано
       за рівнями рівної пріоритетності. Рівні у списку впорядковано за спаданням пріоритетності.

       id++ id--
              післяінкремент і післядекремент змінної
       - +    унарні мінус та плюс
       ++ідентифікатор --ідентифікатор
              доінкремент та додекремент змінної
       ! ~    логічне та порозрядне заперечення
       **     піднесення до степеня
       * / %  множення, ділення, залишок ділення
       + -    додавання, віднімання
       << >>  лівий та правий порозрядний зсув
       <= >= < >
              порівняння
       == !=  рівність та нерівність
       &      бітова «І»
       ^      порозрядне виключне АБО
       |      бітове «АБО»
       &&     логічне «І»
       ||     логічне «АБО»
       expr?expr:expr
              умовний оператор
       = *= /= %= += -= <<= >>= &= ^= |=
              присвоювання
       expr1 , expr2
              кома

       Змінні оболонки можна використовувати як операнди; буде виконано розгортання параметрів до
       обчислення виразу. У виразі на змінні оболонки можна посилатися за назвою без використання
       синтаксису  розгортання параметрів. Обчисленим значенням змінної оболонки, яка є порожньою
       або не встановленою, вважатиметься 0 при посиланні за назвою без  використання  синтаксису
       розгортання  параметрів.  Значення  змінної  буде  обчислено  як  арифметичний  вираз  при
       посиланні на неї, або коли змінній, якій було надано атрибут integer за допомогою  declare
       -i  буде  надано  значення.  Порожнє  значення відповідає 0. Для використання у виразі для
       змінної оболонки не обов'язково має бути увімкнено атрибут integer.

       Цілі сталі має бути визначено з використанням синтаксису визначення мови  C  без  суфіксів
       або  символьних сталих. Сталі з початковим 0 буде оброблено як вісімкові числа. Початковий
       рядок 0x або 0X позначає шістнадцяткове число. У всіх інших випадках,  числа  записують  у
       формі  [основа#]n,  де  необов'язковою  частиною основа є десяткове число від 2 до 64, яке
       означає основу числення, а n — число у цій основі числення. Якщо рядок основа# не вказано,
       буде використано основу числення 10. При заданні n, якщо треба використати цифри, які не є
       десятковими, цифри після 9 слід вказувати як малі літери, великі літери, @  і  _,  саме  у
       такому  порядку.  Якщо  основа  є числом, яке менше або рівне 36, можна використовувати як
       малі, так і великі літери для позначення цифр зі значеннями від 10 до 35.

       Виконання операторів відбувається за пріоритетністю. Підвирази  у  дужках  буде  обчислено
       першими.   Виразами   у   дужках   можна  скористатися  для  зміни  описаних  вище  правил
       пріоритетності.

УМОВНІ ВИРАЗИ

       Умовні вирази використовують у складених командах [[ та вбудованих командах test і  [  для
       перевірки  атрибутів файла і виконання рядкових і арифметичних порівнянь. Поведінка команд
       test і [ визначається кількістю їхніх аргументів; див. опис цих команд, щоб дізнатися  про
       інші, специфічні для них, дії.

       Вирази  формуються  з  наведених нижче унарних або бінарних базових частин. Якщо у виразах
       використано декілька назв файлів, bash оброблятиме їх  за  особливими  правилами.  Якщо  в
       операційній  системі,  у якій запущено bash передбачено існування вказаних нижче особливих
       файлів, bash використає їх; в усіх  інших  випадках,  програма  емулюватиме  ці  файли  на
       внутрішньому  рівні  за  такими  правилами: якщо якийсь з аргументів файл однієї з базових
       частин записано у формі /dev/fd/n, буде перевірено файл із дескриптором n; якщо  якийсь  з
       аргументів  файл  однієї  з  базових  частин  є одним з рядків /dev/stdin, /dev/stdout або
       /dev/stderr, буде перевірено файли із дескрипторами 0, 1 або 2, відповідно.

       Якщо про це окремо не зауважено, у базових частинах, які працюють з файлами, буде виконано
       перехід  за  символічними  посиланнями та оброблено файл, на який виконано посилання, а не
       саме посилання.

       Якщо використано [[, оператори < і > лексикографічно упорядковуватимуться з  використанням
       порядку поточної локалі. Команда test упорядковує за порядком символів в ASCII.

       -a файл
              Істина, якщо файл існує.
       -b файл
              Істина, якщо файл існує і є спеціальним блоковим файлом.
       -c файл
              Істина, якщо файл існує і є спеціальним символьним файлом.
       -d файл
              Істина, якщо файл існує і є каталогом.
       -e файл
              Істина, якщо файл існує.
       -f файл
              Істина, якщо файл існує і є звичайним файлом.
       -g файл
              Істина, якщо файл існує і має встановленим біт групи.
       -h файл
              Істина, якщо файл існує і є символічною ланкою.
       -k файл
              Істина, якщо файл існує і має встановленим «липкий» біт.
       -p файл
               Істина, якщо файл існує і є іменованим каналом (FIFO).
       -r файл
              Істина, якщо файл існує і є придатним до читання.
       -s файл
              Істина, якщо файл існує і має ненульовий розмір.
       -t дескриптор_файла
              Істина, якщо дескриптор файлу дескриптор_файла відкритий і вказує на термінал.
       -u файл
              Істина, якщо файл існує і має встановленим біт встановити-ІД-користувача.
       -w файл
              Істина, якщо файл існує і в нього можна писати.
       -x файл
              Істина, якщо файл існує і є виконуваним.
       -G файл
              Істина, якщо файл існує і його власником є чинний ІД групи.
       -L файл
              Істина, якщо файл існує і є символічною ланкою.
       -N файл
              Істина, якщо файл існує та був змінений після останнього читання.
       -O файл
              Істина, якщо файл існує і його власником є чинний ІД користувача.
       -S файл
              Істина, якщо файл існує і є сокетом.
       файл1 -ef файл2
              Істина, якщо файл1 і файл2 є посиланнями на той самий пристрій або номер inode.
       файл1 -nt файл2
              Істина,  якщо  файл1  є  новішим  (за даною внесених змін) за файл2, або якщо файл1
              існує, а файл2 — ні.
       файл1 -ot файл2
              Істина, якщо файл1 є старішим за файл2, або якщо файл2 існує, а файл — ні.
       -o назва_параметра
              Істина, якщо увімкнено параметр оболонки назва_параметра.  Див.  список  параметрів
              під описом параметра -o вбудованої команди set нижче.
       -v назва змінної
              Істина, якщо змінну оболонки назва_змінної встановлено (їй надано значення).
       -R назва_змінної
              Істина,  якщо  змінну  оболонки  назва_змінної  встановлено  і вона є посиланням на
              назву.
       -z рядок
              Істина, якщо довжина рядка рядок є нульовою.
       рядок
       -n рядок
              Істина, якщо довжина рядка рядок є ненульовою.

       рядок1 == рядок2
       рядок1 = рядок2
              Істина, якщо рядки є однаковими. Для сумісності із POSIX слід використовувати  =  у
              команді   test.  Якщо  використано  із  командою  [[,  буде  виконано  встановлення
              відповідності взірцю, як це описано вище (складені команди).

       рядок1 != рядок2
              Істина, якщо рядки не є рівними.

       рядок1 < рядок2
              Істина, якщо рядок1 стоїть вище за рядок2 при лексикографічному упорядковуванні.

       рядок1 > рядок2
              Істина, якщо рядок1 стоїть нижче за рядок2 при лексикографічному упорядковуванні.

       аргумент1 OP аргумент2
              OP є одним із таких операторів: -eq, -ne, -lt, -le, -gt  або  -ge.  Ці  арифметичні
              бінарні  оператори  повертаю значення «істина», якщо аргумент1 є рівним, не рівним,
              меншим, меншим або рівним, більшим або більшим або рівним за аргумент2, відповідно.
              Аргумент1  і  аргумент2  мають  бути  додатними  або від'ємними цілими числами. При
              використанні у команді [[, аргумент1 і  аргумент2  буде  обчислено  як  арифметичні
              вираз (див.  АРИФМЕТИЧНІ ОБЧИСЛЕННЯ вище).

РОЗГОРТАННЯ ПРОСТИХ КОМАНД

       При  виконання  простих  команд  оболонка  виконує вказані нижче розгортання, встановлення
       значень та переспрямування, зліва праворуч, у вказаному нижче порядку.

       1.     Слова, які обробник позначив  як  надання  змінним  значень  (які  передують  назві
              команди), і переспрямування буде збережено для подальшої обробки.

       2.     Слова,   які  не  є  встановленнями  значень  змінних  або  переспрямуваннями  буде
              розгорнуто. Якщо після розгортання лишаться якісь слова, перше слово  вважатиметься
              назвою команди, а решта слів — її аргументами.

       3.     Переспрямовування   виконуватиметься   так,   як   це   описано   вище   у  розділі
              ПЕРЕСПРЯМУВАННЯ.

       4.     Текст після = у всіх встановленнях значень  змінної  підлягає  розгортанню  тильди,
              розгортанню  параметрів,  заміні  команд,  арифметичним  обчисленням  та  вилученню
              нейтралізації, перш ніж його буде призначено до зміннної.

       Якщо назви команди не отримано, присвоєння значень змінним впливають на поточне середовище
       оболонки.  У  випадку такої команди (яка складається лише з інструкцій надання значення та
       переспрямувань), інструкції з надання значень буде  виконано  перед  переспрямуваннями.  В
       іншому  випадку  змінні  додаються  до  середовища  виконуваної  команди і не впливають на
       поточне середовище оболонки. Якщо будь-яке  з  присвоєнь  намагається  присвоїти  значення
       змінній лише для читання, виникає помилка, і команда завершується із ненульовим станом.

       Якщо  назви  команди не отримано, перенаправлення виконуються, але не впливають на поточне
       середовище оболонки. Помилка переспрямування призводить до завершення команди з ненульовим
       станом.

       Якщо після розширення залишилася назва команди, виконання продовжується, як описано нижче.
       В іншому випадку команда завершується. Якщо одне з розширень містило заміну команди,  стан
       виходу  команди  такий,  як  стан  виходу  останньої виконаної заміни команди. Якщо заміни
       команд не було, команда виходить зі станом нуль.

ВИКОНАННЯ КОМАНД

       Після поділу команди на слова, якщо результат є простою командою і необов'язковим  списком
       аргументів, буде виконано описані нижче дії.

       Якщо  назва  команди  не містить похилих рисок, оболонка намагається знайти її. Якщо існує
       функція оболонки з такою назвою, ця функція викликається, як описано вище в ФУНКЦІЇ.  Якщо
       назва  не  відповідає функції, оболонка шукає її у списку вбудованих команд оболонки. Якщо
       збіг знайдено, буде викликано цю вбудовану команду.

       Якщо назва не є ні функцією оболонки, ні вбудованою командою, і не містить похилих  рисок,
       bash  шукає серед елементів PATH каталог, що містить виконуваний файл з такою назвою. Bash
       для запам'ятовування повних назв виконуваних файлів використовує геш-таблицю  (див.  нижче
       геш  під  заголовком  ВБУДОВАНІ  КОМАНДИ  ОБОЛОНКИ).  Повний  пошук  у  каталогах  із PATH
       виконується лише тоді, коли команду  не  знайдено  в  геш-таблиці.  Якщо  пошук  невдалий,
       оболонка  шукає  визначену функцію оболонки під назвою command_not_found_handle. Якщо така
       функція існує, вона викликається в окремому середовищі виконання, отримавши, як аргументи,
       початкову  команду  та  її  аргументи,  а  стан  виходу  функції  стає  станом виходу цієї
       підоболонки. Якщо цю функцію не визначено, оболонка друкує  повідомлення  про  помилку  та
       повертає стан виходу 127.

       Якщо  пошук  пройшов успішно, або якщо назва команди містить одну чи кілька похилих рисок,
       оболонка виконує названу програму в окремому середовищі виконання. Аргумент 0 стає  рівним
       зазначеній назві, а решта аргументів команди — наданим аргументам, якщо такі є.

       Якщо  це  виконання  не  вдається, оскільки файл не виконуваного формату і не є каталогом,
       вважається, що це скрипт оболонки, файл, що містить команди оболонки, і  оболонка  створює
       новий  екземпляр самої себе для виконання. Ця підоболонка повторно ініціалізується, так що
       результат виглядає так, ніби для обробки скрипту  викликано  нову  оболонку,  за  винятком
       того,  що  розташування  команд,  які  запам'ятав  предок  (див.  нижче геш під заголовком
       ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ), зберігає нащадок.

       Якщо програма є файлом, що починається з #!, залишок першого рядка визначає  інтерпретатор
       для  програми.  Оболонка виконує зазначений інтерпретатор в операційних системах, які самі
       не обробляють  файлів  цього  виконуваного  формату.  Аргументами  інтерпретатора  є  один
       необов’язковий  аргумент  після назви інтерпретатора в першому рядку програми, за яким йде
       назва програми, а потім - аргументи команди, якщо такі є.

СЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД

       Оболонка має середовище виконання, яке складається з таких компонентів:

       •      відкриті файли, які успадковано оболонкою на  момент  виклику  із  модифікаціями  з
              використанням переспрямувань, які передано вбудованій команді exec

       •      поточний  робочий  каталог,  який  встановлено  командами  cd,  pushd  або  popd чи
              успадковано оболонкою на момент виклику

       •      маска режиму створення файлів, яку встановлено за допомогою umask  або  успадковано
              від батьківського процесу оболонки

       •      поточні пастки, які встановлено за допомогою trap

       •      параметри  оболонки,  які  встановлено  наданням  значень  змінним або за допомогою
              команди set чи успадковано від батьківського процесу оболонки у середовищі

       •      функції оболонки, які визначено під час виконання або успадковано від батьківського
              процесу оболонки у середовищі

       •      параметри,  які  увімкнено  на  момент  виклику (типово або за допомогою аргументів
              рядка команди) або встановлено за допомогою команди set

       •      параметри, які вмикають за допомогою shopt

       •      альтернативи оболонки, які визначено за допомогою alias

       •      ідентифікатори різноманітних процесів, зокрема процесів фонових  завдань,  значення
              $$ і значення PPID

       Коли  виконується проста команда, відмінна від вбудованої команди або функції оболонки, її
       викликають в окремому середовищі виконання, яке складається із описаних нижче компонентів.
       Якщо це не вказано окремо, значення успадковуються від оболонки.

       •      відкриті  файли  оболонки  разом  із  усіма  змінами  і  додаваннями, які визначено
              переспрямуваннями команди

       •      поточна робоча тека

       •      маска режиму створення файлів

       •      змінні оболонки і функції, які позначено для експортування, разом зі змінними,  які
              експортовано для команди, які передано у середовищі

       •      пастки, перехоплені оболонкою, скидаються до значень, успадкованих від батьківської
              оболонки, а пастки, знехтувані оболонкою, нехтуються

       Команда, яку викликано у  цьому  окремому  середовищі,  не  може  впливати  на  середовище
       виконання оболонки.

       Підоболонка є копією процесу оболонки.

       Заміна  команд,  команди,  згруповані  в  дужках,  і  асинхронні  команди  викликаються  в
       середовищі підоболонки, яке є дублікатом середовища оболонки, за винятком того, що пастки,
       перехоплені  оболонкою,  скидаються до значень, успадкованих оболонкою під час виклику від
       свого предка. Вбудовані команди, які викликаються як частина конвеєра, також виконуються в
       середовищі  підоболонки.  Зміни,  внесені  в середовище підоболонки, не можуть вплинути на
       середовище виконання оболонки.

       Підоболонки, створені для виконання заміни команд, успадковують значення параметра -e  від
       батьківської  оболонки.  Якщо не в режимі posix, bash у таких підоболонках очищає параметр
       -e.

       Якщо після команди йде &, а керування завданнями неактивне, типовим стандартним входом для
       команди  є  порожній  файл  /dev/null.  В  іншому  випадку  викликана  команда  успадковує
       дескриптори файлу оболонки, що викликає, як змінені перенаправленнями.

СЕРЕДОВИЩЕ

       При виклику програми їй буде передано маси рядків, який називається середовище. Це  список
       пар назва-значення у такій формі:назва=value.

       Оболонка надає декілька способів керування середовищем. При виклику оболонка сканує власне
       середовище і створює параметр для кожної знайденої назви, автоматично позначаючи його  для
       експортування  до  дочірніх  процесів.  Виконувані  команди  успадковують  це  середовище.
       Додавати і вилучати параметри і функції середовища можна  за  допомогою  команд  export  і
       declare  -x.  Якщо  буде  внесено  зміни до значення параметра у середовищі, нове значення
       стане частиною  середовища,  замінивши  собою  старе.  Середовище,  успадковане  будь-якою
       виконуваною  командою,  складається  з  початкового середовища оболонки, чиї значення може
       бути змінено в оболонці, без усіх пар, які вилучено командою unset, і з  усіма  додаванням
       за допомогою команд export і declare -x.

       Середовище  для  будь-якої  простої  команди  або  функції  може  бути тимчасово розширено
       додаванням до неї префікса із визначенням значень параметрів, як це описано вище у розділі
       ПАРАМЕТРИ.  Такі  інструкції  визначення  значень стосуються лише середовища, яке доступне
       відповідній команді.

       Якщо встановлено параметр -k (див. вбудовану команду set  нижче),  до  середовища  команди
       потраплять усі, а не лише ті, які передують назві команди, надання параметрам значень.

       Якщо  bash викликає зовнішню команду, для змінної _ буде встановлено значення повної назви
       файла команди. Цю змінну також буде передано команді у її середовищі.

СТАН ВИХОДУ

       Станом виходу виконуваної команди буде значенням, яке повернуто системним викликом waitpid
       або  еквівалентною функцією. Діапазоном станів виклику є множина цілих чисел від 0 до 255.
       Втім, яке це  описано  нижче,  значення,  що  перевищують  125,  можуть  використовуватися
       оболонкою  зі спеціальною метою. Значення станів виходу для вбудованих функцій оболонки та
       складених команд також обмежено цим діапазоном. За певних умов, оболонка використовуватиме
       спеціальні значення для того, щоб повідомити про певні режим помилок.

       З  точки  зору  оболонки, команду, яка завершує роботу із нульовим станом виходу, виконано
       успішно. Нульовий стан виходу вказує на успіх. Ненульовий стан виходу вказує  на  помилку.
       Якщо  роботу  команди  завершено  із  критичним сигналом N, bash використовує як код стану
       виходу значення 128+N.

       Якщо певну програму  не  буде  знайдено,  дочірній  процес,  який  було  створено  для  її
       виконання,  повертає код стану 127. Якщо програму буде знайдено, але її не можна виконати,
       кодом стану виходу буде 126.

       Якщо виконання команди  завершується  помилкою  через  помилку  під  час  розгортання  або
       переспрямування, код стану виходу буде більшим за нуль.

       Вбудовані  команди оболонки повертають стан виходу 0 (істина), якщо їх виконано успішно, і
       ненульовий стан виходу (хибність), якщо під час виконання станеться помилка. Усі вбудовані
       команди  повертають  стан  виходу  2, якщо потрібно вказати на неправильне використання, —
       загалом, неправильне визначення параметрів або пропущені аргументи.

       Доступ до стану виходу останньої  команди  можна  здійснювати  за  допомогою  спеціального
       параметра $?.

       Сама оболонка bash повертає стан виходу останньої виконаної команди, якщо не буде виявлено
       синтаксичної помилки. Якщо помилку буде виявлено, стан виходу буде ненульовим. Див.  також
       опис вбудованої команди exit нижче.

СИГНАЛИ

       Якщо  bash  працює  в  інтерактивному  режимі  і  не  використано  жодних пасток, оболонка
       ігноруватиме  SIGTERM  (отже,  kill  0  не  завершує  роботи  інтерактивної  оболонки)   і
       перехоплюватиме та оброблятиме SIGINT (отже, не можна перервати вбудовану команду wait). В
       усіх  випадках  bash  ігноруватиме  SIGQUIT.  Якщо  задіяно  керування  завданнями,   bash
       ігноруватиме SIGTTIN, SIGTTOU та SIGTSTP.

       Невбудовані  команди, які виконує bash, мають обробники сигналів, встановлені на значення,
       успадковані оболонкою від її предка. Коли керування завданнями не діє, асинхронні  команди
       нехтують  SIGINT  і  SIGQUIT  на  додаток  до  цих  успадкованих  обробників.  Команди, що
       виконуються внаслідок підміни  команд,  нехтують  сигнали  керування  завданнями  SIGTTIN,
       SIGTTOU і SIGTSTP.

       Типово  вихід  з  оболонки відбувається після отримання SIGHUP. Перед виходом інтерактивна
       оболонка повторно надсилає  SIGHUP  усім  запущеним  або  зупиненим  завданням.  Зупиненим
       завданням  надсилається  SIGCONT, щоб переконатися, що вони отримують SIGHUP. Щоб оболонка
       не надсилала сигнал певному завданню, його слід  видалити  з  таблиці  завдань  вбудованою
       командою  disown  (див.  нижче  ВБУДОВАНІ  КОМАНДИ ОБОЛОНКИ) або позначити, що воно не має
       отримувати SIGHUP, за допомогою disown -h.

       Якщо параметр оболонки huponexit встановлено за допомогою  shopt,  то,  коли  інтерактивна
       оболонка для входу завершує роботу, bash надсилає всім завданням SIGHUP.

       Якщо bash очікує завершення команди і отримує сигнал, для якого встановлено пастку, пастка
       не буде виконана, доки команда не завершиться. Коли  bash  очікує  на  асинхронну  команду
       через вбудовану команду wait, прийняття сигналу, для якого встановлено пастку, призведе до
       негайного повернення зі вбудованої команди wait зі станом виходу більшим від  128,  одразу
       після чого буде виконано пастку.

       Якщо  керування завдань не увімкнено, і bash очікує на завершення роботи головної команди,
       оболонка отримує створені клавіатурою сигнали, зокрема SIGINT (зазвичай,  породженим  ^C),
       які  користувачі, зазвичай, мають надсилати команді. Таке трапляється, оскільки оболонка і
       команда перебувають у тій самі групі процесів, що і термінал, і ^C  надсилає  SIGINT  усім
       процесам у цій групі процесів.

       Якщо  bash працює без увімкненого керування завданнями і отримує SIGINT під час очікування
       на завершення основної команди, програма очікує, аж доки основна команда завершить роботу,
       а потім вирішує, що робити із SIGINT:

       1.     Якщо виконання команди переривається сигналом SIGINT, bash вважатиме, що користувач
              хоче завершити виконання усього скрипту, і працює  із  сигналом  SIGINT  (наприклад
              запуском пастки SIGINT або самостійним завершенням роботи);

       2.     Якщо  команда не завершить роботу через надсилання SIGINT, програма обробила SIGINT
              самостійно і не вважала цей  сигнал  критичним.  У  цьому  випадку  bash  також  не
              вважатиме  SIGINT критичним сигналом, а припускатиме, що SIGINT було використано як
              частину звичайної процедури роботи програми (наприклад, emacs використовує його для
              переривання  редагування  команд)  або  його  було спеціально відкинуто. Втім, bash
              запустить будь-яку пастку, яку встановлено на SIGINT, як  програма  це  робить  для
              будь-якого  іншого  сигналу  з  пасткою,  який  вона  отримує під час очікування на
              завершення основної команди, для сумісності.

КЕРУВАННЯ ЗАВДАННЯМИ

       Керування  завданнями  означає  можливість  вибірково  зупиняти  (призупиняти)   виконання
       процесів   і   продовжувати   (поновлювати)  їх  виконання  пізніше.  Користувач  зазвичай
       використовує цю можливість через інтерактивний інтерфейс,  що  надається  разом  драйвером
       терміналу ядра операційної системи та bash.

       Оболонка  асоціює  завдання з кожним конвеєром. Вона зберігає таблицю поточних виконуваних
       завдань, список яких можна вивести за допомогою команди jobs. Коли bash запускає  завдання
       асинхронно (на тлі), виводиться рядок такого вигляду:

              [1] 25647

       який означає, що це завдання має номер 1 і ID останнього процесу в конвеєрі, пов’язаного з
       цим завданням 25647. Усі процеси  в  одному  конвеєрі  є  членами  одного  завдання.  Bash
       використовує абстракцію завдання як основу для керування завданнями.

       Щоб  полегшити  реалізацію  інтерфейсу  користувача  для  керування завданнями, операційна
       система підтримує поняття поточного ідентифікатора групи процесів  термінала.  Члени  цієї
       групи   процесів   (процеси,   чий   ідентифікатор   групи   процесів  дорівнює  поточному
       ідентифікатору групи процесів термінала) отримують генеровані клавіатурою сигнали, такі як
       SIGINT.  Кажуть,  що  ці  процеси  перебувають  на  передньому  плані. Фонові процеси – це
       процеси, ідентифікатор групи яких відрізняється від терміналу; такі процеси  захищені  від
       сигналів, що генеруються клавіатурою. Лише процесам переднього плану дозволяється читати з
       або, якщо це вказує користувач за допомогою stty tostop,  записувати  в  термінал.  Фонові
       процеси,  які  намагаються  читати  з  терміналу (записувати в ного, коли діє stty tostop)
       отримують сигнал SIGTTIN (SIGTTOU)  від  драйвера  термінала  ядра,  який,  якщо  його  не
       перехопити, призупиняє процес.

       Якщо операційна система, на якій запущено bash, підтримує керування завданнями, bash надає
       можливість це робити. Введення символу призупинення  (зазвичай  ^Z,  Control-Z)   під  час
       виконання  процесу  призводить  до  зупинки  цього  процесу  та повернення керування bash.
       Введення  символу  відкладеного  призупинення  (зазвичай  ^Y,  Control-Y)  призводить   до
       зупинення  процесу,  коли  він намагається прочитати вхідні дані з терміналу, і повернення
       керування  до  bash.  Потім  користувач   може   маніпулювати   станом   цього   завдання,
       використовуючи  команду  bg,  щоб  продовжити  його  у  фоновому  режимі,  команду fg, щоб
       продовжити її на передньому плані, або команду kill, щоб його  знищити.  A  ^Z  спрацьовує
       негайно  і має додатковий побічний ефект, що полягає у відкиданні очікуваного виведення та
       введеного раніше тексту.

       Існує кілька способів посилатися на завдання в оболонці.  Символ  %  вводить  специфікацію
       завдання  (jobspec).  Номер  завдання  n  можна  вказати  як  %n.  До завдання можна також
       звертатися за допомогою префікса назви, який використовується для  його  запуску,  або  за
       допомогою  підрядка,  який з’являється в його командному рядку. Наприклад, %ce посилається
       на зупинене завдання, назва команди якого починається з ce. Якщо префікс відповідає  більш
       ніж  одному  завданню,  bash  повідомляє  про  помилку.  Використання %?ce, з іншого боку,
       стосується будь-якого завдання, в  командному  рядку  якого  є  рядок  ce.  Якщо  підрядок
       відповідає  більш  ніж  одному  завданню,  bash  повідомляє  про  помилку. Символи %% і %+
       посилаються на так зване поточне завдання, тобто, останнє завдання,  зупинене,  коли  воно
       було  на  передньому  плані  або  запущене  у фоновому режимі. На попереднє завдання можна
       послатися, скориставшись %-. Якщо є тільки одне завдання, %+ і %- обидва можна використати
       для  посилання  на нього. У виводі, що стосується завдань (наприклад, вивід команди jobs),
       поточне завдання завжди позначається прапорцем +, а попереднє завдання - -.  Один  %  (без
       зазначення специфікації завдання) також стосується поточного завдання.

       Щоб вивести завдання на передній план, можна просто використати його назву: %1 є синонімом
       “fg %1”, що переносить завдання 1 із фону на передній план. Аналогічно, “%1  &”  відновлює
       роботу 1 у фоновому режимі, що еквівалентно “bg %1”.

       Оболонка  дізнається  відразу,  коли завдання змінює стан. Зазвичай, bash очікує, перш ніж
       вивести повідомлення про зміни в статусі завдання, щоб не переривати іншого  виводу.  Якщо
       увімкнено параметр -b для вбудованої команди set, bash повідомлятиме про ці зміни негайно.
       Будь-яка пастка на SIGCHLD виконується при виході для кожного дочірнього процесу.

       Якщо спроба вийти з bash робиться за наявності  зупинених  завдань  (або  запущених,  якщо
       параметр  оболонки  checkjobs  увімкнено  за допомогою вбудованої команди shopt), оболонка
       друкує попередження, і, якщо параметр checkjobs увімкнено, виводить список завдань та їхні
       стани.  Потім  для  перевірки їх стану можна скористатись командою jobs. Якщо другу спробу
       вийти зроблено без проміжних команд, оболонка не друкує іншого  попередження,  і  будь-які
       зупинені завдання завершуються.

       Коли  оболонка  очікує  на завдання або процес із використанням вбудованої команди wait, і
       увімкнено керування завданнями, wait повернеться, коли завдання змінить стан. Параметр  -f
       змушує wait, перш ніж повернутися, зачекати на завершення завдання або процесу.

ЗАПИТИ

       За  інтерактивного  виконання,  bash  показує  первинне запрошення PS1, коли інтерпретатор
       готовий читати команду, і вторинне запрошення PS2, коли для  завершення  команди  потрібне
       додаткове  введення. Bash показує PS0 після читання команди, але перед її виконанням. Bash
       показує PS4 як описано вище, перш ніж відстежувати кожну команду, коли увімкнено  параметр
       -x.  Bash  дозволяє налаштувати ці рядки запрошень, вставляючи ряд спеціальних символів із
       зворотною косою рискою перед ними, які декодуються так:
              \a     символ дзвінка ASCII (07)
              \d     дата у форматі «день_тижня місяць дата» (наприклад, «Tue May 26»)
              \D{формат}
                     формат передається в strftime(3), а результат вставляється в  рядок  запиту;
                     порожній  формат  призводить до відображення часу для певної локалі. Фігурні
                     дужки потрібні
              \e     символ escape в ASCII (033)
              \h     назва вузла до першої `.'
              \H     назва вузла
              \j     кількість завдань, що оболонка зараз ними керує
              \l     основа назви файлу пристрою терміналу оболонки
              \n     новий рядок
              \r     повернення каретки
              \s     назва оболонки, основа назви $0 (частина після останньої косої риски)
              \t     поточний час у 24-годинному форматі HH:MM:SS
              \T     поточний час у 12-годинному форматі HH:MM:SS
              \@     поточний час у 12-годинному форматі ДП/ПП
              \A     поточний час у 24-годинному форматі HH:MM
              \u     назва облікового запису поточного користувача
              \v     версія bash (наприклад, 2.00)
              \V     випуск bash, версія + рівень модифікації (наприклад, 2.00.0)
              \w     значення   змінної   оболонки   PWD   ($PWD)   $HOME   скороченим    тильдою
                     (використовується значення змінної PROMPT_DIRTRIM)
              \W     базова назва $PWD з $HOME, скороченим тильдою
              \!     номер у журналі цієї команди
              \#     номер цієї команди
              \$     якщо ефективним ідентифікатором користувача (UID) є 0, #, інакше $
              \nnn   символ, що відповідає вісімковому числу nnn
              \\     зворотна похила
              \[     початок  послідовності  не  призначених  для  друку  символів,  якими  можна
                     скористатися для вбудовування керівної послідовності термінала до запиту
              \]     кінець послідовності не призначених для друку символів

       Номер команди та номер журналу зазвичай відрізняються:  номер  журналу  команди  –  це  її
       положення  в  списку журналу, який може включати команди, відновлені з файлу журналу (див.
       нижче ЖУРНАЛ), а номер команди — це позиція в послідовності команд, що виконуються під час
       поточного   сеансу  оболонки.  Після  декодування  рядка  він  розширюється  за  допомогою
       розширення параметрів, заміни команд, арифметичного розширення та видалення лапок, залежно
       від  значення  параметра оболонки promptvars (див. нижче опис команди shopt під заголовком
       ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ ). Це  може  мати  небажані  побічні  ефекти,  якщо  екрановані
       частини  рядка  з’являються  під  час  заміни  команди або містять символи, призначені для
       розширення слова.

READLINE

       Це бібліотека, яка обробляє читання вводу під  час  використання  інтерактивної  оболонки,
       якщо  під  час  виклику оболонки не вказано параметр --noediting. Редагування рядків також
       застосовується за використання параметру -e для вбудованої програми read.  Типово  команди
       редагування рядків подібні до команд Emacs. Також доступний інтерфейс редагування рядків у
       стилі vi. Редагування рядків можна ввімкнути в будь-який час за  допомогою  параметрів  -o
       emacs  або  -o  vi  у  вбудованій команді set (див. нижче ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ). Щоб
       вимкнути редагування рядка після запуску оболонки, скористайтеся параметрами +o emacs  або
       +o vi вбудованої команди set.

   Запис Readline
       У  цьому розділі для запису сполучень клавіш застосовується нотація в стилі Emacs. Клавіші
       з Control позначаються C-клавіша, наприклад, C-n означає Control-N. Так  само,  клавіші  з
       Meta  позначаються M-клавіша, тобто, M-x означає Meta-X. (На клавіатурах без клавіші Meta,
       M-x означає ESC x, тобто, натискання клавіші ESC, а потім x. Це робить ESC Meta-префіксом.
       Комбінація  M-C-x  означає  ESC-Control-x,  або  натискання клавіші ESC, а потім утримання
       клавіші Control під час натискання клавіші x.)

       Команди readline  можуть  отримувати  числові  аргументи,  які  зазвичай  діють  як  число
       повторень. Іноді, однак, важливим є знак аргументу. Передача від'ємного аргументу команді,
       яка діє в прямому напрямку (наприклад., kill-line) змушує цю команду  діяти  у  зворотному
       напрямку. Нижче наведено команди, які опрацьовують аргументи інакше.

       Коли  команда  описується  як  вбитий  текст,  видалений  текст зберігається для можливого
       майбутнього пошуку (висмикування). Вбитий текст зберігається в кільці вбитого.  Послідовні
       вбиття  призводять  до  того,  що  текст  накопичується в один блок, який можна висмикнути
       відразу. Команди, які не вбивають тексту, відокремлюють шматки тексту на кільці вбитого.

   Ініціалізація Readline
       Readline налаштовується розміщенням команд у файлі  ініціалізації  (файл  inputrc).  Назва
       цього файлу береться зі значення змінної INPUTRC. Якщо цю змінну не встановлено, типовим є
       ~/.inputrc. Якщо цей  файл  не  існує  або  його  неможливо  прочитати,  кінцевим  типовим
       значенням   є  /etc/inputrc.  Коли  запускається  програма,  яка  використовує  бібліотеку
       readline, зчитується файл ініціалізації, а також установлюються прив’язки клавіш і змінні.
       У  файлі  ініціалізації readline дозволено лише кілька основних конструкцій. Порожні рядки
       нехтуються. Рядки, що починаються з #, є коментарями. Рядки, що починаються з $,  вказують
       на умовні конструкції. Інші рядки позначають налаштування прив'язки клавіш і змінних.

       Типові  прив’язки  клавіш  можна  змінити  за  допомогою файлу inputrc. Інші програми, які
       використовують цю бібліотеку, можуть додавати власні команди та прив’язки.

       Наприклад, вписування

              M-Control-u: universal-argument
       або
              C-Meta-u: universal-argument
       до файла inputrc призведе до того, що у відповідь на M-C-u буде виконано команду  readline
       universal-argument.

       Передбачено  розпізнавання  таких  назв  символів:  RUBOUT,  DEL,  ESC, LFD, NEWLINE, RET,
       RETURN, SPC, SPACE та TAB.

       Окрім назв команд, readline уможливлює пов'язування комбінацій клавіш із рядком, який буде
       вставлено, коли буде натиснуто комбінацію (макрос).

   Клавіатурні скорочення у readline
       Синтаксис  записів,  які  керують  прив'язкою  клавіш  у  файлі inputrc, є доволі простим.
       Достатньо вказати назву команди або текст макроса та послідовність  клавіш,  з  якою  слід
       пов'язати  цю команду чи макрос. Комбінацію клавіш можна вказати в один з двох способів: у
       формі символічної назви клавіш, із можливими префіксами Meta- або Control-,  або  у  формі
       послідовності клавіш.

       При  використанні  форми  назва_комбінації:назва_функції  або  макрос,  назва_комбінації є
       комбінацією назв клавіш у латинській розкладці. Приклад:

              Control-u: universal-argument
              Meta-Rubout: backward-kill-word
              Control-o: "> output"

       У наведеному вище прикладі C-u пов'язано із функцією universal-argument,  M-DEL  пов'язано
       із  функцією  backward-kill-word,  а  C-o  пов'язано  із запуском макроса, який записано у
       правій частині виразу (тобто вставити текст ``> output'' до рядка).

       У другій  формі,  "послідовність_клавіш":назва_функції  або  макрос,  послідовність_клавіш
       відрізняється  від  назви_комбінації  вище  тим,  що рядки, які описують усю послідовність
       клавіш можна вказати, записавши послідовність у подвійних  лапках.  Можна  використовувати
       деякі із екранованих послідовностей у стилі GNU Emacs, як у наведеному нижче прикладі, але
       розпізнавання символічних назв клавіш не передбачено.

              "\C-u": universal-argument
              "\C-x\C-r": re-read-init-file
              "\e[11~": "Function Key 1"

       У цьому прикладі C-u знову пов'язано із функцією universal-argument. C-x C-r пов'язано  із
       функцією  re-read-init-file,  а ESC [ 1 1 ~ пов'язано із вставленням тексту ``Function Key
       1''.

       Ось повний список екранованих послідовностей у стилі GNU Emacs:
              \C-    префікс Ctrl
              \M-    префікс Meta (Windows)
              \e     символ скасування
              \\     зворотна похила
              \"     власне "
              \'     власне '

       Окрім екранованих послідовностей у стилі GNU  Emacs,  доступний  другий  набір  екранувань
       зворотною похилою рискою:
              \a     гудок (дзвінок)
              \b     backspace
              \d     Delete
              \f     подавання бланку
              \n     новий рядок
              \r     повернення каретки
              \t     горизонтальна табуляція
              \v     вертикальна табуляція
              \nnn   восьмибітовий  символ,  значенням якого є вісімкове значення nnn (від однієї
                     до трьох цифр)
              \xHH   восьмибітовий символ, значенням якого  є  шістнадцяткове  значення  HH  (від
                     однієї до двох шістнадцяткових цифр)

       При  введення  тексту  макросу  для  позначення  визначення  макросу  слід використовувати
       одинарні або подвійні лапки. Текст поза лапками вважатиметься  назвою  функції.  У  вмісті
       макросу  буде  розгорнуто  усі  описані  вище  екрановані символом зворотної похилої риски
       послідовності. Символ зворотної похилої риски екранує  будь-який  інший  символ  у  тексті
       макросу, зокрема " та '.

       Bash  дозволяє  показувати  або  змінювати  поточні прив'язки клавіш readline за допомогою
       вбудованої команди bind. Під  час  інтерактивного  використання  режим  редагування  можна
       перемкнути  за допомогою параметра -o вбудованої команди set (див. нижче ВБУДОВАНІ КОМАНДИ
       ОБОЛОНКИ).

   Змінні Readline
       У readline передбачено змінні,  якими  можна  скористатися  для  налаштовування  поведінки
       редактора.  Значення змінної може бути встановлено у файлі inputrc за допомогою інструкції
       у такій формі:

              set назва_змінної значення
       або за допомогою вбудованої команди bind (див.  ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче).

       Якщо не зазначено,  змінні  рядка  readline  можуть  набувати  значень  On  або  Off  (без
       урахування  регістру).  Нерозпізнані  назви  змінних  нехтуються.  Коли читається значення
       змінної, порожні або нульові значення, "on" (нечутливе до регістру) і "1" еквівалентні On.
       Решта значень еквівалентні Off. Змінні та їх типові значення:

       active-region-start-color
              Рядкова  змінна,  яка  керує  кольором  та тлом тексту при показі тексту в активній
              області (див. опис enable-active-region  нижче).  Ця  змінна  не  повинна  приймати
              будь-яких  фізичних  позицій  символів  на  екрані, отже вона має складатися лише з
              керівних послідовностей символів термінала. Її буде виведено до термінала до показу
              тексту в активній області. Для цієї змінної буде відновлено типове значення під час
              кожної зміни типу термінала. Типовим значенням є рядок, який переводить термінал  у
              надзвичайний  режим, отриманий з опису термінала terminfo. Зразковим значенням може
              бути "\e[01;33m".
       active-region-end-color
              Рядкова змінна, яка «скасовує» наслідки  застосування  active-region-start-color  і
              відновлює  «звичайний» вигляд термінала після показу тексту в активній області. Цей
              рядок не повинен приймати жодних фізичних позицій символів на екрані, отже, він має
              складатися  лише  з  екранованих  послідовностей  термінала.  Його буде виведено до
              термінала після показу тексту в активній області. Для цієї змінної буде  відновлено
              типове значення при зміні типу термінала. Типовим значенням є рядок, який відновлює
              термінал з надзвичайного режиму,  отриманий  з  опису  термінала  terminfo.  Зразок
              значення: "\e[0m".
       bell-style (audible)
              Керує   тим,  що  відбудеться,  коли  readline  звертається  до  звукового  сигналу
              терміналу. Якщо  встановлено  none,  readline  не  подає  звукового  сигналу.  Якщо
              встановлено  visible,  readline  використовує  видимий  дзвінок, якщо такий є. Якщо
              встановлено audible, намагається подати звуковий сигнал терміналу.
       bind-tty-special-chars (On)
              Якщо  встановлено  On,  readline  намагається  пов'язати  керувальні  символи,  які
              спеціально обробляються термінальним драйвером ядра, з їх еквівалентами readline.
       blink-matching-paren (Off)
              Якщо  встановлено  On,  readline  намагається  короткочасно  перемістити  курсор до
              відкритої дужки, коли вставлено закриту дужку.
       colored-completion-prefix (Off)
              Якщо встановлено On, readline у переліку завершень виводить спільний префікс набору
              можливих  завершень іншим кольором. Визначення кольору беруться зі значення змінної
              середовища LS_COLORS. Якщо у $LS_COLORS є визначення кольору для нетипового суфікса
              «readline-colored-completion-prefix»,  readline  використовуватиме  цей  колір  для
              типового префікса замість типового кольору.
       colored-stats (Off)
              Якщо встановлено On, readline  показує  можливі  завершення,  використовуючи  різні
              кольори, щоб вказують на тип файлу. Визначення кольору беруться зі значення змінної
              середовища LS_COLORS.
       comment-begin (“#”)
              Рядок, який буде вставлено, якщо буде виконано команду readline insert-comment.  Цю
              команду пов'язано із M-# у режимі emacs і # у режимі команд vi.
       completion-display-width (-1)
              Кількість  позицій  стовпчиків  на екрані, які буде використано для показу можливих
              варіантів при виконанні автоматично доповнення. Значення буде  проігноровано,  якщо
              воно менше 0 або більше за ширину екрана у терміналі. Значення 0 призведе до показу
              відповідників по одному на рядок. Типовим є значення -1.
       completion-ignore-case (Off)
              Якщо встановлено значення On, readline виконує пошук відповідників за назвою  файла
              і доповнює текст без врахування регістру символів.
       completion-map-case (Off)
              Якщо   встановлено   значення   On  і  увімкнено  completion-ignore-case,  readline
              оброблятиме дефіси (-) та підкреслювання (_) як еквіваленти при виконання пошуку та
              автоматичного доповнення назв файлів без врахування регістру символів.
       completion-prefix-display-length (0)
              Максимальна  довжина  у  символах  загального  префікса у списку можливих варіантів
              доповнення, для якої префікс буде показано без видозміни. Якщо встановлено  додатне
              значення,  при  показі варіантів автоматичного доповнення загальний префікс, довший
              за встановлене значення, буде замінено обрізаним варіантом, який  завершуватиметься
              трьома крапками.
       completion-query-items (100)
              Визначає,  коли  користувач  отримує  запит  щодо  показу певної кількості можливих
              доповнень, згенерованих командою possible-completions.  Можна  встановити  будь-яке
              ціле  значення, більше або рівне нулю. Якщо кількість можливих доповнень більша або
              дорівнює  значенню  цієї  змінної,  readline  запитає,  чи  бажає   користувач   їх
              переглядати;  в  іншому  разі  вони просто виведуться в терміналі. Нульове значення
              означає,  що  readline  ніколи  не  повинна  надсилати  запит;  від'ємні   значення
              вважатимуться нульовими.
       convert-meta (On)
              Якщо  встановлено  значення  On,  readline  перетворюватиме символи зі встановленим
              восьмим бітом у послідовність клавіш ASCII, видаляючи восьмий біт і додаючи префікс
              escape-символу  (фактично,  використовуючи escape як метапрефікс). Типово – On, але
              readline встановить його в Off, якщо локаль містить восьмибітні  символи.  Значення
              цієї  змінної  залежить  від категорії локалі LC_CTYPE і може змінюватися при зміні
              локалі.
       disable-completion (Off)
              Якщо встановлено значення On, readline успадковуватиме автоматичне доповнення слів.
              Символи  автоматичного  доповнення буде встановлено до рядка так, їх було пов'язано
              із self-insert.
       echo-control-characters (On)
              Якщо  встановлено  значення  On,  у  операційних  системах,  які  сигналізують  про
              відповідну   підтримку,   readline   повторить  символ,  який  відповідає  сигналу,
              створеному з клавіатури.
       editing-mode (emacs)
              Визначає, буде readline починати роботу із набором прив'язок до комбінацій  клавіш,
              подібним  до Emacs чи vi. Для параметра режим_редагування можна встановити значення
              emacs або vi.
       emacs-mode-string (@)
              Якщо змінну show-mode-in-prompt увімкнено, цей рядок виводиться безпосередньо перед
              останнім  рядком  основного запиту, коли активний режим редагування emacs. Значення
              розгортається як прив’язка клавіші,  тому  доступний  стандартний  набір  мета-  та
              керувальних  префіксів  і  керувальних  послідовностей  зі  зворотною косою рискою.
              Використовуйте  екрановані  послідовності  \1  та  \2,  щоб  почати  та   закінчити
              послідовності  недрукованих  символів,  які  можна використовувати для вбудовування
              послідовності керування терміналом у рядок режиму.
       enable-active-region (On)
              Аргументом точка є поточна позиція курсора, а  позначка  посилається  на  збережену
              позицію  курсора. Текст між точкою вставлення та позначкою будемо називати областю.
              Якщо для цієї змінної встановлено значення On, readline дозволить  певним  командам
              позначати  область  як  активну.  Якщо  область є активною, readline підсвічуватиме
              текст  в  області  з  використанням  значення  active-region-start-color,   типовим
              значенням  якої  є  рядок,  який  вмикає  надзвичайний  режим термінала. В активній
              області буде показано текст, який вставлено  вставленням  у  дужках,  та  будь-який
              відповідний  текст,  який  знайдено  нарощувальним  або  ненарощувальним  пошуком у
              журналі.
       enable-bracketed-paste (On)
              Коли встановлено On, readline налаштує термінал так, що  дозволить  йому  вміщувати
              кожну  вставку  в  буфер  редагування  як  один  рядок  символів, замість того, щоб
              обробляти кожен символ так, ніби він був  прочитаний  з  клавіатури.  Це  запобігає
              виконанню  у readline будь-яких команд з редагування, прив'язаних до послідовностей
              клавіш, що можуть з'являтися у вставленому тексті.
       enable-keypad (Off)
              Якщо  встановлено  значення  On,  readline   намагатиметься   ввімкнути   програмну
              клавіатуру  під  час  її  виклику.  Деякі  системи  потребують цього, щоб увімкнути
              клавіші зі стрілками.
       enable-meta-key (On)
              Коли встановлено On, readline спробує ввімкнути  будь-який  ключ  метамодифікатора,
              про  підтримку  якого термінал заявляє під час його виклику. На багатьох терміналах
              метаключ використовується для надсилання восьмибітових символів.
       expand-tilde (Off)
              Якщо  встановлено  On,  коли  readline  намагається  закінчити  слово,  виконується
              розгортання тильди.
       history-preserve-point (Off)
              Якщо  встановлено On, код журналу намагається розмістити курсор у тому самому місці
              в кожному рядку журналу, отриманому за допомогою previous-history або next-history.
       history-size (не встановлено)
              Задає максимальну кількість записів журналу,  збережених  у  списку  журналу.  Якщо
              встановлено  значення  0,  усі  наявні записи журналу видаляються, а нові записи не
              зберігаються. Якщо встановлено значення менше нуля, кількість  записів  журналу  не
              обмежена.  Типово  кількість  записів  журналу  встановлюється за значенням змінної
              оболонки HISTSIZE. За спроби встановити для history-size  нечислове  значення,  для
              максимальної кількості записів журналу буде встановлено значення 500.
       horizontal-scroll-mode (Off)
              Коли  встановлено  On,  змушує  readline  використовувати  для  показу  один рядок,
              прокручуючи введення горизонтально на одному екранному рядку, коли він стає  довшим
              за  ширину  екрана,  а  не  переносити  на  новий  рядок.  Цей параметр автоматично
              вмикається для терміналів висотою 1.
       input-meta (Off)
              Якщо встановлено On, readline увімкне восьмибітове введення (тобто,  не  видалятиме
              восьмого  біту  зі  зчитуваних  символів),  незалежно  від того, що, за твердженням
              терміналу, він підтримує. Назва meta-flag є синонімом цієї змінної. Типовим є  Off,
              але readline встановить On, якщо локаль містить восьмибітові символи. Значення цієї
              змінної залежить від категорії локалі LC_CTYPE і може змінюватися при зміні локалі.
       isearch-terminators (“C-[C-J”)
              Рядок символів, який повинен завершити інкрементний пошук без подальшого  виконання
              символу  як  команди.  Якщо  цій  змінній  не  надано  значення, інкрементний пошук
              завершать символи ESC і C-J.
       keymap (emacs)
              Задає поточну розкладку  клавіш  readline.  Допускаються  назви  розкладок:  emacs,
              emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command і vi-insert. vi еквівалентне
              vi-command; emacs еквівалентне emacs-standard. Типовим є значення  emacs;  значення
              editing-mode також впливає на типову розкладку.
       keyseq-timeout (500)
              Визначає  тривалість  очікування  readline на символ, під час читання неоднозначної
              послідовності клавіш (такої, яка може  сформувати  повну  послідовність  клавіш  на
              основі   вже   введеного,  або  може  продовжити  введення  для  завершення  довшої
              послідовності клавіш). Якщо вхід не отримано протягом затримки, readline використає
              коротшу,  але  повну  послідовність  клавіш.  Значення вказано в мілісекундах, тому
              значення 1000 означає, що readline чекатиме на  додаткове  введення  одну  секунду.
              Якщо  для  цієї  змінної  встановлено значення, менше або рівне нулю, або нечислове
              значення,  readline  чекатиме  натиснення  наступної  клавіші,  щоб  вирішити,  яку
              послідовність клавіш завершити.
       mark-directories (On)
              Якщо встановлено в On, завершені каталоги матимуть похилу в кінці назв.
       mark-modified-lines (Off)
              Якщо  встановлено  в  On,  рядки  журналу, що були змінені будуть показані з зіркою
              попереду (*).
       mark-symlinked-directories (Off)
              Якщо встановлено значення On, до повних назв,  які  є  символьними  посиланнями  на
              каталоги, додається коса риска (залежно від значення mark-directories).
       match-hidden-files (On)
              Ця  змінна,  якщо її встановити в On, примушує readline знаходити файли, назви яких
              починаються з `.' (приховані файли) коли відбувається доповнення назв файлів.  Якщо
              встановити значення Off, користувачу треба буде надавати передню `.' в назві файлу,
              щоб його було доповнено.
       menu-complete-display-prefix (Off)
              Якщо встановлено значення On, доповнення за меню показує  спільний  префікс  списку
              можливих доповнень (який може бути порожнім) перед циклічним переходом за списком.
       output-meta (Off)
              Якщо встановлено значення On, readline показуватиме символи зі встановленим восьмим
              бітом безпосередньо, а не у вигляді escape-послідовності з метапрефіксом. Типовим є
              Off,  але readline встановить його на On, якщо локаль містить восьмибітові символи.
              Значення цієї змінної залежить від категорії локалі LC_CTYPE і може змінюватися при
              зміні локалі.
       page-completions (On)
              Якщо встановлено в On, readline використовуватиме внутрішній пейджер схожий на more
              для показу повноекранного списку можливих доповнень за раз.
       print-completions-horizontally (Off)
              Якщо  встановлено  значення  On,  readline  виводитиме  доповнення  зі  збігами   в
              алфавітному порядку горизонтально, а не донизу екрану.
       revert-all-at-newline (Off)
              Якщо  встановлено значення On, readline перед поверненням скасує всі зміни в рядках
              журналу, коли виконується accept-line. Типово рядки журналу можуть бути  змінені  й
              зберігають окремі списки скасування для викликів readline.
       show-all-if-ambiguous (Off)
              Це  змінює  типову  поведінку функцій доповнення. Якщо встановлено значення On, для
              слів, які мають більше одного можливого доповнення, замість дзвінка будуть  негайно
              виводитися збіги.
       show-all-if-unmodified (Off)
              Це  змінює  типову поведінку функцій доповнення так само, як show-all-if-ambiguous.
              Якщо  встановлено  значення  On,  для  слів,  які  мають  більше  одного  можливого
              доповнення  без  будь-якого  можливого часткового доповнення (можливі доповнення не
              мають спільного префікса), замість дзвінка будуть негайно виводитися збіги.
       show-mode-in-prompt (Off)
              Якщо встановлено в On, додайте рядок на початку,  щоб  показувати  підказку  режиму
              редагування:  emacs, команда vi, або вставлення vi. Рядки режиму може встановлювати
              користувач (напр., emacs-mode-string).
       skip-completed-text (Off)
              Якщо встановлено в On, це змінює типову поведінку доповнення коли один  відповідник
              вставляється  в  рядок.  Цей  параметр  працює  лише  коли  виконується  доповнення
              всередині слова. Якщо увімкнено, readline не  вставляє  символи,  що  збігаються  з
              символами  після  точки у слові, що доповнюється, тож частини слів після курсора не
              дублюються.
       vi-cmd-mode-string ((cmd))
              Якщо змінну show-mode-in-prompt увімкнено, цей рядок виводиться безпосередньо перед
              останнім  рядком  основного  запиту,  коли  активний  режим редагування vi у режимі
              команди. Значення розгортається як прив’язка клавіші,  тому  доступний  стандартний
              набір  мета-  та  керувальних  префіксів  і керувальних послідовностей зі зворотною
              косою рискою. Використовуйте екрановані послідовності  \1  та  \2,  щоб  почати  та
              закінчити  послідовності  недрукованих  символів,  які  можна  використовувати  для
              вбудовування послідовності керування терміналом у рядок режиму.
       vi-ins-mode-string ((ins))
              Якщо змінну show-mode-in-prompt увімкнено, цей рядок виводиться безпосередньо перед
              останнім  рядком  основного  запиту,  коли  активний  режим редагування vi у режимі
              вставлення. Значення розгортається як прив’язка клавіші, тому доступний стандартний
              набір  мета-  та  керувальних  префіксів  і керувальних послідовностей зі зворотною
              косою рискою. Використовуйте екрановані послідовності  \1  та  \2,  щоб  почати  та
              закінчити  послідовності  недрукованих  символів,  які  можна  використовувати  для
              вбудовування послідовності керування терміналом у рядок режиму.
       visible-stats (Off)
              Якщо встановлено значення On, при виведенні  списку  можливих  доповнень  до  назви
              файла буде дописано символ, який позначає тип файла, який виводить команда stat(2).

   Умовні конструкції readline
       Readline  реалізує  засіб,  подібний  за  духом  до  умовної компіляції препроцесора C, що
       дозволяє  виконувати  прив’язки  клавіш  і  налаштування  змінних  у  результаті   тестів.
       Використовуються чотири директиви обробника.

       $if    Конструкція  $if  дозволяє  виконувати  прив’язки  на  основі  режиму  редагування,
              терміналу, який використовується, або програми,  що  використовує  readline.  Текст
              тесту  після  будь-якого  оператора  порівняння поширюється до кінця рядка; якщо не
              зазначено інше, для його ізолювання не потрібні символи.

              mode   Форма mode= директиви $if використовується  для  перевірки  того,  перебуває
                     readline  у  режимі  emacs  чи vi. Це можна використати разом з командою set
                     keymap,   наприклад,   щоб   установити   прив'язки   лише   для   розкладок
                     emacs-standard і emacs-ctlx, якщо readline запущено в режимі emacs.

              term   Формою  term=  можна  скористатися  для  включення специфічних для термінала
                     прив'язок клавіш, можливо, щоб пов'язати послідовності натискання клавіш  із
                     функціональними  клавішами  термінала. Слово у правій частині виразу після =
                     підлягатиме перевірці на відповідність повній  назві  термінала  та  частині
                     назви  термінала  до  першого  символу  -.  Це,  наприклад, надаватиме змогу
                     встановити відповідність sun як до sun, так і до sun-cmd.

              version
                     Перевіркою  version  можна  скористатися  для  виконання  порівнянь   версій
                     readline.  Змінну  version  буде  розгорнуто  до  поточної  версії readline.
                     Множина операторів порівняння складається з ===), !=, <=, >=,  <  та  >.
                     Номер  версії,  який  буде використано праворуч від оператора, складається з
                     номера основної версії, необов'язкової десяткової крапки та  необов'язкового
                     номера  проміжної  версії (наприклад, 7.1). Якщо проміжну версію не вказано,
                     її значення вважатиметься рівним 0.  Оператор  може  бути  відокремлено  від
                     рядка version і від номера версії пробілами.

              application
                     Конструкцією  application  можна  скористатися для включення специфічних для
                     програми  параметрів.  Кожна  з  програм,  у  яких  використано   бібліотеку
                     readline,  встановлює  назву  програми, а файл ініціалізації може перевіряти
                     певне значення. Цим можна скористатися для прив'язки  послідовностей  клавіш
                     до  функцій,  які  можуть  бути  корисними  для  певної програми. Наприклад,
                     вказана нижче команда додає послідовність клавіш, яка бере у  лапки  поточне
                     або попереднє слово у bash:

                     $if Bash
                     # Нейтралізація поточного або попереднього слова
                     "\C-xq": "\eb\"\ef\""
                     $endif

              variable
                     Конструкція variable надає у ваше розпорядження прості перевірки на рівність
                     змінних та значень readline. Дозволеними операторами порівняння є  =,  ==  і
                     !=.  Назву  змінної має бути відокремлено від оператора порівняння пробілом;
                     оператор може бути відокремлено від  значення  у  правій  частині  пробілом.
                     Перевірки  можна  виконувати  як  для  булевих,  так і для рядкових змінних.
                     Булеві зміні слід порівнювати зі значеннями on і off.

       $endif Ця команда, як у попередньому прикладі, перериває виконання команди $if.

       $else  Команди у цій гілці директиви $if буде виконано, якщо не  буде  пройдено  перевірку
              умови.

       $include
              Ця  директива  приймає  одну  назву файла як аргумент і читає команди і прив'язки з
              цього файла. Наприклад, наступна директива виконає читання /etc/inputrc:

              $include  /etc/inputrc

   Пошук
       У readline передбачено команди для пошуку у журналі команд (див.   ЖУРНАЛ  нижче)  рядків,
       які   містять   вказаний   рядок.   Передбачено   два   режими   пошуку:  нарощувальний  і
       ненарощувальний.

       Нарощувальний пошук розпочинається перед тим, як користувач завершив  введення  рядка  для
       пошуку.  При  введення  кожного  з  символів рядка пошуку, readline показуватиме наступний
       запис із журналу, який відповідає введеному на поточний момент рядку.  Для  нарощувального
       пошуку  достатньо  мінімальної кількості символів для знаходження бажаного запису журналу.
       Для переривання нарощувального пошуку використовують значення змінної isearch-terminators.
       Якщо  із  цією  змінною  не  пов'язано  значення, нарощувальний пошук можна буде перервати
       натисканням клавіші Esc або комбінації клавіш Ctrl-J. Натискання комбінації клавіш  Ctrl-G
       призведе  до  переривання  нарощувального  пошуку  і  відновлення  початкового  рядка. При
       перериванні пошуку запис журналу, який містить рядок пошуку стане поточним рядком команди.

       Щоб знайти інші відповідні записи в списку  журналу,  наберіть  Control-S  або  Control-R,
       відповідно.  Це  почне пошук назад або вперед в журналу на наступний запис, щоб відповідає
       вже набраному рядку.  Будь-які  інші  комбінації  клавіш  прив'язані  до  команд  readline
       припинять  пошук та виконають команду. Наприклад, newline припинить пошук та прийме рядок,
       таким чином виконуючи команду зі списку журналу.

       Readline запам'ятовує останній  рядок  нарощувального  пошуку.  Якщо  буде  двічі  поспіль
       введено  Ctrl-R  при  визначенні  рядка  нового  пошуку,  буде  використано рядок пошуку з
       пам'яті.

       Ненарощувальні пошуки зчитують весь рядок пошуку перед тим, як починати  шукати  в  рядках
       журналу. Рядок пошуку може бути набраний користувачем або бути частиною поточного рядка.

   Назви команд readline
       Далі  наведено список назв команд та типові послідовності клавіш, до яких вони прив'язані.
       Назви команд без відповідної послідовності клавіш є  типово  неприв'язаними.  В  наступних
       описах,  point  посилається  на поточну позицію курсора, а mark вказує на позицію курсора,
       збережену командою set-mark. Текст між точкою і позначкою позначається, як region.

   Команди для пересування
       beginning-of-line (C-a)
              Перейти до початку поточного рядка.
       end-of-line (C-e)
              Перейти до кінця рядка.
       forward-char (C-f)
              Перейти на символ вперед.
       backward-char (C-b)
              Перейти назад на один символ.
       forward-word (M-f)
              Перейти вперед до кінця наступного слова. Слова складаються з літер та цифр.
       backward-word (M-b)
              Перейти назад до початку поточного або  попереднього  слова.  Слова  складаються  з
              літер і цифр.
       shell-forward-word
              Перейти   вперед  до  кінця  наступного  слова.  Словами  вважаються  послідовності
              символів, які обмежено ненейтралізованими метасимволами оболонки.
       shell-backward-word
              Перейти назад до початку  поточного  або  попереднього  слова.  Словами  вважаються
              послідовності символів, які обмежено ненейтралізованими метасимволами оболонки.
       previous-screen-line
              Спробувати  перемістити  позицію  до  того  самого  стовпчика  фізичного  екрана  у
              попередньому рядку фізичного екрана. Це не дасть бажаного результату, якщо поточний
              рядок  readline  не  займає  більше  одного  фізичного  рядка  або  якщо позиція не
              перевищує довжини запиту разом із довжиною екрана у символах.
       next-screen-line
              Спробувати  перемістити  позицію  до  того  самого  стовпчика  фізичного  екрана  у
              наступному  рядку  фізичного екрана. Це не дасть бажаного результату, якщо поточний
              рядок readline не займає більше одного фізичного рядка або якщо  довжина  поточного
              рядка readline не перевищує довжини запиту разом із довжиною екрана у символах.
       clear-display (M-C-l)
              Очистити екран і, якщо можна, буфер гортання термінала, потім перемалювати поточний
              рядок, лишивши поточний рядок на початку екрана.
       clear-screen (C-l)
              Очистити екран, потім  перемалювати  поточний  рядок,  лишивши  поточний  рядок  на
              початку екрана. З аргументом освіжити поточний рядок без очищення екрана.
       redraw-current-line
              Освіжити поточний рядок.

   Команди для роботи з журналом
       accept-line (Newline, Return)
              Прийняти  рядок,  незалежно  від  того,  де  перебуває  курсор.  Якщо  цей  рядок є
              непорожнім, додати його до списку журналу відповідно до стану змінної  HISTCONTROL.
              Якщо  рядок  є  зміненим  рядком  журналу,  потім  відновити  початковий стан рядка
              журналу.
       previous-history (C-p)
              Отримати попередню команду зі списку журналу, пересунувшись назад списком.
       next-history (C-n)
              Отримати наступну команду зі списку журналу, пересунувшись вперед списком.
       beginning-of-history (M-<)
              Перейти до першого рядка у журналі.
       end-of-history (M->)
              Перейти до кінця журналу введення, тобто до рядка, який зараз вводять.
       operate-and-get-next (C-o)
              Прийняти поточний рядок до виконання і отримати наступний рядок з журналу  відносно
              поточного  для  редагування.  Числовий  аргумент, якщо його вказано, визначає запис
              журналу, яким слід скористатися замість поточного рядка.
       fetch-history
              Із числовим аргументом отримати відповідний запис у списку журналу і  зробити  його
              поточним рядком. Без аргументу, перейти назад до першого запису у списку журналу.
       reverse-search-history (C-r)
              Шукати  у  напрямку до початку журналу, починаючи з поточного рядка і пересуваючись
              «вгору» журналу, якщо це потрібно. Це нарощувальний пошук.
       forward-search-history (C-s)
              Шукати у напрямку до кінця журналу, починаючи з  поточного  рядка  і  пересуваючись
              «вниз» журналу, якщо це потрібно. Це нарощувальний пошук.
       non-incremental-reverse-search-history (M-p)
              Шукати  у напрямку до початку журналу, починаючи з поточного рядка, з використанням
              ненарощувального пошуку рядка, який надано користувачем.
       non-incremental-forward-search-history (M-n)
              Шукати у напрямку до кінця журналу з використанням ненарощувального  пошуку  рядка,
              який надано користувачем.
       history-search-forward
              Шукати  вперед  через  історію  рядок  з  символами  між початком поточного рядка і
              точкою. Це - ненарощувальний пошук.
       history-search-backward
              Шукати назад через історію рядок з символами між початком поточного рядка і точкою.
              Це - ненарощувальний пошук.
       history-substring-search-backward
              Шукати  назад  через  історію  рядок  з  символами  між  початком поточного рядка і
              поточною позицією курсора (точкою). Рядок пошуку може мати збіг в будь-де  в  низці
              журналу. Це - ненарощувальний пошук.
       history-substring-search-forward
              Шукати  вперед  через  історію  рядок  з  символами  між початком поточного рядка і
              точкою. Рядок пошуку може мати збіг будь-де в низці журналу. Це  -  ненарощувальний
              пошук.
       yank-nth-arg (M-C-y)
              Вставити перший аргумент попередньої команди (переважно друге слово на попередньому
              рядку) в точці. З аргументом n, вставити n-те слово з попередньої команди (слова  в
              попередній  команді починаються з слова 0). Негативний аргумент вставляє n-те слово
              від кінця попередньої команди. Коли аргумент n обчислено, його  витягують  як  ніби
              вказано розкриття журналу "!n".
       yank-last-arg (M-., M-_)
              Вставити  останній  аргумент попередньої команди (останнє слово попереднього запису
              журналу). З числовим аргументом,  поводиться  так  само  як  yank-nth-arg.  Успішні
              виклики  в  yank-last-arg  пересуваються назад в списку журналу, вставляючи останнє
              слово (або слово, вказане аргументом  першого  виклику)  кожного  рядка  по  черзі.
              Будь-який  числовий  аргумент  наданий  цим  послідовним викликам визначає напрямок
              пересування через історію. Негативний аргумент  перемикає  напрямок  через  історію
              (назад  чи  вперед),   Засоби  розкриття  журналу  використовуються  для  витягання
              останнього слова, як ніби вказано розкриття журналу "!$".
       shell-expand-line (M-C-e)
              Розгорнути рядок, як це робить оболонка. У  результати  буде  виконано  розгортання
              альтернатив  та журналу, а також усіх розгортань слів оболонки. Опис розгортання за
              журналом наведено у розділі ДОПОВНЕННЯ ЗА ЖУРНАЛОМ.
       history-expand-line (M-^)
              Виконати доповнення за журналом для поточного рядка. Опис  доповнення  за  журналом
              можна знайти у розділі ДОПОВНЕННЯ ЗА ЖУРНАЛОМ нижче.
       magic-space
              Виконати  доповнення  за  журналом  для  поточного  рядка  і  вставити пробіл. Опис
              доповнення за журналом можна знайти у розділі ДОПОВНЕННЯ ЗА ЖУРНАЛОМ нижче.
       alias-expand-line
              Виконати розгортання альтернатив у поточному рядку.  Опис  розгортання  альтернатив
              можна знайти у розділі АЛЬТЕРНАТИВИ.
       history-and-alias-expand-line
              Виконати доповнення за журналом та розгортання альтернатив у поточному рядку.
       insert-last-argument (M-., M-_)
              Синонім до yank-last-arg.
       edit-and-execute-command (C-x C-e)
              Викликати  редактор  для  поточного  рядка  команди і виконати результат як команди
              оболонки. Bash спробує викликати як редактор  $VISUAL,  $EDITOR  і  emacs,  саме  у
              такому порядку.

   Команди для змінення тексту
       end-of-file (зазвичай C-d)
              Символ,  що  вказує  кінець файла, як установлено, наприклад, у ``stty''.  Якщо цей
              символ читається, коли в рядку немає  символів,  а  позиція  міститься  на  початку
              рядка, readline інтерпретує його як кінець уведення і повертає EOF.
       delete-char (C-d)
              Видалити  символ у точці. Якщо ця функція прив’язана до того ж символу, що й символ
              tty EOF, зазвичай C-d, опис дії див. вище.
       backward-delete-char (Rubout)
              Видалити символ перед курсором. Якщо надано числовий аргумент,  зберегти  видалений
              текст у кільці вбитого.
       forward-backward-delete-char
              Видалити  символ під курсором, якщо курсор не перебуває в кінці рядка; в останньому
              випадку буде видалено символ перед курсором.
       quoted-insert (C-q, C-v)
              Додати  наступний  уведений  символ  до  рядка   дослівно.   Так   можна   вставити
              послідовності клавіш, наприклад, C-q.
       tab-insert (C-v TAB)
              Вставити символ табуляції.
       self-insert (a, b, A, 1, !, ...)
              Вставити введений символ.
       transpose-chars (C-t)
              Поміняти  місцями  символ  перед  курсором і символ під курсором, також перемістити
              курсор вперед. Якщо курсор перебуває в кінці рядка, то  буде  переставлено  останні
              два символи рядка. Від'ємні аргументи не діють.
       transpose-words (M-t)
              Поміняти  місцями  слово  перед  курсором  і слово після курсора, також перемістити
              курсор вперед. Якщо курсор перебуває в кінці рядка, то  буде  переставлено  останні
              два слова в рядку.
       upcase-word (M-u)
              Перевести  поточне  (або наступне) слово у верхній регістр. З від'ємним аргументом,
              перевести у верхній регістр попереднє слово, не переміщуючи курсора.
       downcase-word (M-l)
              Перевести поточне (або наступне) слово у нижній регістр.  З  від'ємним  аргументом,
              перевести у нижній регістр попереднє слово, не переміщуючи курсора.
       capitalize-word (M-c)
              Почати з великої букви поточне (або наступне) слово. З від'ємним аргументом, Почати
              з великої букви попереднє слово, не переміщуючи курсора.
       overwrite-mode
              Перемкнути режим заміни. З явним додатним числовим аргументом перемикається в режим
              заміни.  З  явним  недодатним числовим аргументом перемикається в режим вставки. Ця
              команда впливає лише на режим emacs; режим vi вмикає заміну  інакше.  Кожен  виклик
              readline()  починається в режимі вставки. В режимі заміни, пов'язані з self-insert,
              замінюють текст у позиції курсора, а не зсувають його вправо. Символи, пов'язані  з
              backward-delete-char, замінюють символ перед курсором на пропуск. Типово ця команда
              не зв’язана.

   Вбивання та висмикування
       kill-line (C-k)
              Вбити текст від точки до кінця рядка.
       backward-kill-line (C-x Rubout)
              Вбити текст назад до початку рядка.
       unix-line-discard (C-u)
              Вбити назад від точки до початку рядка. Вбитий текст зберігається в кільці вбитого.
       kill-whole-line
              Зачистити усі символи у поточному рядку без зв'язку з позицією.
       kill-word (M-d)
              Вбити від точки до кінця поточного слова, або якщо між словами, до кінця наступного
              слова. Межі слів такі ж самі, як в forward-word.
       backward-kill-word (M-Rubout)
              Зачистити  слово  за  позицією.  Межі  слів  є  тими  самими,  які використовуються
              backward-word.
       shell-kill-word
              Вбити від точки до кінця поточного слова, або якщо між словами, до кінця наступного
              слова. Межі слів такі ж самі, як в shell-forward-word.
       shell-backward-kill-word
              Зачистити  слово  за  позицією.  Межі  слів  є  тими  самими,  які використовуються
              shell-backward-word.
       unix-word-rubout (C-w)
              Зачистити слово за позицією, використовуючи пробіл як можу слова.  Зачищений  текст
              буде збережено у кільці зачищення.
       unix-filename-rubout
              Вбити  слово  за  точкою,  використовуючи  пробіл  та символ похилої, як межі слів.
              Вбитий текст зберігається у кільці вбитого.
       delete-horizontal-space (M-\)
              Вилучити усі пробіли і табуляції навколо позиції.
       kill-region
              Зачистити текст у поточній області.
       copy-region-as-kill
              Копіювати текст до області, щоб зачистити буфер.
       copy-backward-word
              Копіювати слово до позиції до буфера зачищення. Межі слова є тими самими, що і  для
              backward-word.
       copy-forward-word
              Копіювати  слово  після позиції до буфера зачищення. Межі слова є тими самими, що і
              для forward-word.
       yank (C-y)
              Висмикнути верхівку кільця вбитого в буфер на точці.
       yank-pop (M-y)
              Повернути кільце вбитого, і висмикнути нову верхівку. Працює лише  після  yank  або
              yank-pop.

   Числові аргументи
       digit-argument (M-0, M-1, ..., M--)
              Додати  цю  цифру  до  аргументу, що вже збирається, або почати новий аргумент. M--
              починає негативний аргумент.
       universal-argument
              Це інший спосіб вказати аргумент. Якщо після цієї команди вказано одну або декілька
              цифр,  можливо,  разом  із  початковим знаком «мінус», ці цифри визначать аргумент.
              Якщо після команди вказано цифри, повторне  виконання  universal-argument  завершує
              числовий  аргумент,  інакше  буде проігноровано. У особливому випадку, якщо за цією
              командою одразу вказано символ, який не є ні цифрою, ні знаком  «мінус»,  лічильник
              аргументу  для  наступної  команди  буде  помножено на чотири. Початковим значенням
              лічильника аргументу  є  одиниця,  тому  виконання  цієї  функції  уперше  збільшує
              лічильник до чотирьох, наступне виконання — до шістнадцяти, тощо.

   Доповнення
       complete (TAB)
              Спробувати  виконати  доповнення  тексту  перед  позицією.  Bash  спробує  виконати
              доповнення, користуючись текстом як змінною (якщо текст починається  з  $),  іменем
              користувача (якщо текст починається з ~), назвою вузла (якщо текст починається з @)
              або командою (включно з альтернативами та функціями)  послідовно.  Якщо  нічого  не
              буде знайдено, буде виконано спробу доповнення за назвою файла.
       possible-completions (M-?)
              Список можливих доповнень тексту до позиції.
       insert-completions (M-*)
              Вставити   усі  доповнення  тексту  перед  позицією,  які  могло  б  бути  створено
              possible-completions.
       menu-complete
              Подібно до complete, але замінює  слово  для  доповнення  єдиним  відповідником  зі
              списку  можливих  доповнень.  Повторне  виконання menu-complete крокує через список
              можливих  доповнень,  вставляючи  кожен  відповідник  по  черзі.  В  кінці   списку
              доповнень, дзвенить дзвоник (контрольовано параметром bell-style)  та відновлюється
              початковий текст. Аргумент n пересуває n позицій  вперед  в  списку  відповідників;
              можна  використати  негативний аргумент для пересування назад по списку. Ця команда
              призначена бути прив'язаною до TAB, але є типово неприв'язаною.
       menu-complete-backward
              Ідентично до menu-complete, але пересуває назад через список можливих доповнень, як
              ніби   menu-complete   було   надано  негативний  аргумент.  Ця  команда  є  типово
              неприв'язаною.
       delete-char-or-list
              Вилучає символ під курсором,  якщо  він  не  на  початку  або  в  кінці  рядка  (як
              delete-char).  Якщо в кінці рядка, поводиться ідентично до possible-completions. Ця
              команда типово неприв'язана.
       complete-filename (M-/)
              Спробувати доповнити назву файла за текстом до позиції.
       possible-filename-completions (C-x /)
              Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст назвою файла.
       complete-username (M-~)
              Спробувати доповнити ім'я користувача за текстом до позиції.
       possible-username-completions (C-x ~)
              Вивести можливі варіанти  доповнення  тексту  до  позиції,  вважаючи  текст  іменем
              користувача.
       complete-variable (M-$)
              Спробувати доповнити змінну оболонки за текстом до позиції.
       possible-variable-completions (C-x $)
              Вивести  можливі  варіанти  доповнення  тексту  до  позиції, вважаючи текст змінної
              оболонки.
       complete-hostname (M-@)
              Спробувати доповнити назву вузла за текстом до позиції.
       possible-hostname-completions (C-x @)
              Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст назвою вузла.
       complete-command (M-!)
              Спробувати доповнення на тексті перед точкою, розглядаючи  її,  як  назву  команди.
              Доповнення   команди   намагається  знайти  відповідник  тексту  між  псевдонімами,
              зарезервованими словами, функціями оболонки, вбудованими елементами  оболонки,  та,
              зрештою, назвами виконуваних файлів, в саме такому порядку.
       possible-command-completions (C-x !)
              Вивести  можливі  варіанти  доповнення  тексту  до  позиції,  вважаючи текст назвою
              команди.
       dynamic-complete-history (M-TAB)
              Спробувати доповнення на тексті перед точкою, порівнюючи текст з рядками зі  списку
              журналу щодо потенційних відповідників доповнення.
       dabbrev-expand
              Спробувати  доповнення  меню  на тексті перед точкою, порівнюючи текст з рядками зі
              списку журналу щодо потенційних відповідників доповнення.
       complete-into-braces (M-{)
              Виконати доповнення назви файла і вставити список  можливих  доповнень  у  фігурних
              дужках так, щоб список став доступним оболонці (див. Розгортання у дужках вище).

   Макроси клавіатури
       start-kbd-macro (C-x ()
              Почати збереження введених символів до поточного макросу клавіатури.
       end-kbd-macro (C-x ))
              Зупинити  збереження  введених  символів до поточного макросу клавіатури і зберегти
              визначення.
       call-last-kbd-macro (C-x e)
              Повторно виконати останній визначений макрос клавіатури, надіславши символи макроса
              так, наче їх було введено з клавіатури.
       print-last-kbd-macro ()
              Вивести  останній макрос клавіатури, визначений у форматі, який можна використати у
              файлі inputrc.

   Різне
       re-read-init-file (C-x C-r)
              Прочитати вміст файла inputrc і включити усі прив'язки або визначення змінних,  які
              там буде знайдено.
       abort (C-g)
              Перервати виконання поточної команди редагування і відтворити гудок термінала (який
              встановлюється параметром bell-style).
       do-lowercase-version (M-A, M-B, M-x, ...)
              Якщо метафікований символ x є символом верхнього регістру,  виконати  команду,  яку
              пов'язано  із  відповідним  метафікованим  символом нижнього регістру. Поведінку не
              визначено, якщо x вже є символом нижнього регістру.
       prefix-meta (ESC)
              Метафікувати наступний введений символ.  ESC f є тим самим, що і Meta-f.
       undo (C-_, C-x C-u)
              Нарощувальне скасування дій, яке окремо записується для кожного рядка.
       revert-line (M-r)
              Скасувати усі зміни, які було внесено до цього рядка. Результат  буде  подібним  до
              виконання команди undo достатню для повернення рядка до початкового стану кількість
              разів.
       tilde-expand (M-&)
              Виконати тильда-розгортання для поточного слова.
       set-mark (C-@, M-<пропуск>)
              Встановити позначку у позицію. Якщо вказано  числовий  аргумент,  буде  встановлено
              позначку у відповідній числовій позиції.
       exchange-point-and-mark (C-x C-x)
              Поміняти  місцями  позиці і позначку. Для поточної позиції курсора буде встановлено
              збережену позицію, а попередню позицію курсора буде збережено як позначку.
       character-search (C-])
              Буде прочитано символ, після чого позицію буде пересунуто до  наступного  входження
              цього  символу.  Використання від'ємного значення аргументу призведе до переходу до
              попередніх входжень.
       character-search-backward (M-C-])
              Буде прочитано символ, після чого позицію буде пересунуто до попереднього входження
              цього  символу.  Використання від'ємного значення аргументу призведе до переходу до
              наступних входжень.
       skip-csi-sequence
              Прочитати достатньо символів для складання багатоклавішної послідовності,  подібної
              до  тієї,  яку  визначено  для  клавіш,  подібних до Home і End. Такі послідовності
              починаються з індикатора керівної послідовності (CSI),  зазвичай,  ESC-[.  Якщо  цю
              послідовність прив'язано до "\[", клавіші, з яких складаються такі послідовності не
              працюватимуть, якщо їх не пов'язано явно із командою readline, —  не  вставлятимуть
              символи  клавіш  до  буфера  редагування.  Типово,  не  прив'язано,  але, зазвичай,
              прив'язують до ESC-[.
       insert-comment (M-#)
              Без числового аргументу на початку поточного рядка буде вставлено значення  змінної
              readline  comment-begin.  Якщо вказано числовий аргумент, ця команда працюватиме як
              перемикач: якщо символи на початку рядка не збігаються зі значенням  comment-begin,
              буде вставлено це значення, в іншому ж випадку, символи comment-begin буде вилучено
              з початку рядка. В обох випадках рядок  буде  прийнято  так,  наче  було  вставлено
              символ  нового  рядка.  За  типового  значення  comment-begin ця команда перетворює
              поточний рядок на коментар  оболонки.  Якщо  у  результаті  застосування  числового
              аргументу   символ  коментування  буде  вилучено,  рядок  буде  виконано  командною
              оболонкою.
       spell-correct-word (C-x s)
              Виконати виправлення у поточному слові, вважаючи його назвою каталогу або файла,  у
              той  самий спосіб, що і для параметра оболонки cdspell. Межі слів є тими самими, що
              використовуються у shell-forward-word.
       glob-complete-word (M-g)
              Слово перед позицією буде оброблено як взірець  для  розгортання  шляху  з  неявним
              додаванням  зірочки  наприкінці.  Цей взірець буде використано для створення списку
              відповідних назв файлів для можливого доповнення.
       glob-expand-word (C-x *)
              Слово перед  позицією  буде  оброблено  як  взірець  для  розгортання  шляху.  Буде
              вставлено  список  відповідних  назв  файлів  із  заміною слова. Якщо буде передано
              числовий аргумент, перед розгортанням шляху до слова буде  неявним  чином  дописано
              зірочку наприкінці.
       glob-list-expansions (C-x g)
              Буде  показано список розгортань, які було б створено за допомогою glob-expand-word
              і перемальовано рядок. Якщо буде передано  числовий  аргумент,  перед  розгортанням
              шляху до слова буде неявним чином дописано зірочку наприкінці.
       dump-functions
              Вивести  усі  функції  та  їхні  прив'язки до комбінацій клавіш до потоку виведення
              readline. Якщо вказано числовий аргумент, виведені дані буде форматовано  так,  щоб
              їх можна було зробити частиною файла inputrc.
       dump-variables
              Вивести  усі  придатні  до  встановлення змінні readline та їхні значення до потоку
              виведення readline. Якщо вказано числовий аргумент, виведені дані буде  форматовано
              так, щоб їх можна було зробити частиною файла inputrc.
       dump-macros
              Вивести усі послідовності клавіш readline, які пов'язано із макросами та рядки, які
              вони виводять. Якщо вказано числовий аргумент,  виведення  буде  форматовано  таким
              чином, щоб його можна було зробити частиною файла inputrc.
       display-shell-version (C-x C-v)
              Вивести дані щодо версії для поточного екземпляра bash.

   Запрограмоване доповнення
       Якщо  буде  здійснено спробу доповнення слова для аргументу команди, для якої специфікацію
       доповнення (compspec) було визначено з використанням  вбудованої  команди  complete  (див.
       ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ нижче), буде викликано можливості програмованого доповнення.

       Спочатку,  буде  визначено  назву  команди.  Якщо  слово команди є порожнім рядком (спробу
       доповнення виконано на початку порожнього рядка), буде використано будь-які compspec,  які
       визначено за допомогою параметра -E команди complete. Якщо для команди визначено compspec,
       цей compspec буде використано для створення списку можливих доповнень слова.  Якщо  словом
       команди є повна назва шляху, спочатку буде виконано пошук compspec для повної назви шляху.
       Якщо для повної назви шляху  не  буде  знайдено  compspec,  буде  виконано  спробу  знайти
       compspec  для  частини,  яка  слідує за кінцевим символом похилої риски. Якщо ці пошуки не
       дадуть результату у формі compspec, типово,  буде  використано  будь-який  compspec,  який
       визначено  за  допомогою параметра -D команди complete. Якщо типового compspec немає, bash
       спробує розгортання альтернатив для слова команди,  як  остаточний  резервний  варіант,  і
       спробує знайти compspec для слова команди за будь-яким успішним розгортанням.

       Щойно  буде знайдено compspec, його буде використано для побудови списку відповідних слів.
       Якщо compspec не буде знайдено, буде виконано звичайне доповнення bash, яке описано вище у
       розділі Доповнення.

       Спочатку,  буде використано дії, які визначено compspec. Повернуто буде лише відповідники,
       префіксом яких є слово, яке доповнюють. Якщо для  доповнення  назв  файлів  або  каталогів
       використано  параметр  -f або -d, для фільтрування відповідників буде використано значення
       змінної оболонки FIGNORE.

       Далі буде створено усі доповнення, які задано взірцем розгортання шляхів для параметра -G.
       Створені  за взірцем слова не обов'язково повинні збігатися зі словом, яке доповнюють. Для
       фільтрування відповідників не буде використано  змінну  середовища  GLOBIGNORE,  але  буде
       використано змінну середовища FIGNORE.

       Далі,  буде  розглянуто  рядок, який задано як аргумент параметра -W. Спочатку, рядок буде
       поділено на слова з використанням символів в особливій змінній IFS, як роздільників.  Буде
       також  взято до уваги нейтралізацію символів в оболонці. Потім кожне слово буде розгорнуто
       з використання розгортання у фігурних дужках, розгортання тильди, розгортання параметрів і
       змінних,  заміни команд та арифметичних обчислень, які описано вище у розділі РОЗГОРТАННЯ.
       Результати буде поділено за  правилами,  які  описано  вище  у  розділі  Поділ  на  слова.
       Відповідність   результатів  слову,  яке  доповнюють,  буде  встановлено  з  використанням
       доповнюваного слова як префікса. Відповідні слова стануть можливими варіантами доповнення.

       Після того, як ці збіги згенеровано, викликається будь-яка функція оболонки або команда  з
       параметрами -F та -C. Коли команда або функція викликається, змінні COMP_LINE, COMP_POINT,
       COMP_KEY і COMP_TYPE отримують значення, як описано вище в розділі Змінні  оболонки.  Якщо
       викликається  функція  оболонки,  встановлюються також змінні COMP_WORDS і COMP_CWORD. Під
       час виклику функції або команди, першим аргументом ($1) є назва  команди,  аргументи  якої
       доповнюються,  другий аргумент ($2) — це слово, яке доповнюється, а третій аргумент ($3) —
       це слово, що передує в поточному командному рядку слову,  яке  доповнюється.  Фільтрування
       згенерованих  доповнень  за  доповнюваним  словом  не виконується; функція або команда має
       повну свободу щодо генерування збігів.

       Першою буде  виконано  будь-яку  функцію,  яку  вказано  за  допомогою  -F.  Функція  може
       використовувати  усі  можливості  оболонки, зокрема вбудовану команду compgen, яку описано
       нижче, для створення відповідників. Функція має записувати усі можливі варіанти  доповнень
       до змінної-масиву COMPREPLY, по одному варіанту на елемент масиву.

       Далі,  буде  викликано  будь-яку  команду,  яку  вказано  за  допомогою  параметра  -C,  у
       середовищі, яке є еквівалентним до заміни команди. Команда має вивести  список  доповнень,
       по  одному на рядок, до стандартного виведення. Для екранування символу нового рядка, якщо
       потрібно, можна скористатися символом зворотної похилої риски.

       Після створення всіх можливих доповнень, до  списку  буде  застосовано  будь-який  фільтр,
       визначений  з  параметром  -X.  Фільтр  - це шаблон, який використовується для розujhnfння
       шляху; & в шаблоні замінюється текстом слова, що доповнюється. Літерал & можна  екранувати
       за допомогою зворотної похилої риски; вона видаляється перед випробуванням збігу. Будь-яке
       доповнення, яке відповідає шаблону, буде  вилучено  зі  списку.  Початковий  !   заперечує
       шаблон;  у цьому випадку буде видалено будь-яке доповнення, що не відповідає шаблону. Якщо
       ввімкнено  параметр  оболонки  nocasematch,  відповідність  перевіряється  без  урахування
       регістру букв.

       Нарешті,  будь-який  префікс і суфікс, зазначені параметрами -P і -S, додаються до кожного
       члена списку доповнення, а результат повертається до коду доповнення  readline  як  список
       можливих доповнень.

       Якщо  раніше застосовані дії не створять жодного відповідника, і було передано параметр -o
       dirnames команди complete при визначенні compspec, буде виконано спробу  доповнення  назви
       каталогу.

       Якщо  при  визначенні  compspec  команді complete було передано параметр -o plusdirs, буде
       виконано спробу доповнення назви каталогу, а усі відповідники буде додано  до  результатів
       інших дій.

       Типово,  якщо  знайдено  compspec,  усі  створені за ним результати буде повернуто до коду
       доповнення як повний набір можливих доповнень. Спроби  скористатися  типовими  доповненням
       bash  виконано  не  буде, а типове доповнення назв файлів для readline буде вимкнено. Якщо
       вказано параметр -o bashdefault команди complete при визначенні  compspec,  буде  виконано
       спробу скористатися типовими доповненнями bash, якщо compspec не дає ніяких відповідників.
       Якщо  вказано  параметр  -o  default  команди  complete  при  визначенні  compspec,   буде
       використано  типові  доповнення  readline,  якщо compspec (і, якщо зроблено спробу, типові
       доповнення bash) не дає жодного відповідника.

       Якщо compspec вказує,  що  бажаним  є  доповнення  назви  каталогу,  програмовані  функції
       доповнення  примусять  readline  дописати символ похилої риски наприкінці доповнених назв,
       які є символічними посиланням  на  каталоги  з  використанням  значення  змінної  readline
       mark-directories, незалежно від значення змінної readline mark-symlinked-directories.

       Є  деяка  підтримка  динамічної  модифікації доповнення. Це корисно, якщо застосовується в
       поєднанні  із  типовим  доповненням,  зазначеним  у  complete  -D.  Функції  оболонки,  що
       виконуються  як  обробники  доповнення,  можуть  вказувати,  що доповнення слід повторити,
       повернувши статус виходу 124. Якщо  функція  оболонки  повертає  124  і  змінює  compspec,
       пов’язаний  з  командою,  для  якої  виконується  спроба  доповнення  (подається як перший
       аргумент, коли функція виконується), програмоване доповнення перезапускається з початку зі
       спробою  знайти  новий  compspec  для  цієї  команди. Це дозволяє динамічно будувати набір
       доповнень у міру спроб доповнення, а не завантажувати всі одночасно.

       Наприклад, якщо припустити, що існує бібліотека compspec,  кожна  з  яких  зберігається  у
       файлі,  що  відповідає  назві  команди,  така  функція  доповнення  типово завантажуватиме
       доповнення динамічно:

       _completion_loader()
       {
            . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
       }
       complete -D -F _completion_loader -o bashdefault -o default

ЖУРНАЛ

       Якщо увімкнено параметр -o history  вбудованої  команди  set,  оболонка  надає  доступ  до
       журналу  команд,  -  списку  команд,  уведених  раніше. Значення змінної HISTSIZE визначає
       кількість команд для збереження в списку журналу.  Зберігається  текст  останніх  HISTSIZE
       команд  (типово - 500). Оболонка зберігає кожну команду в списку журналу перед розширенням
       параметрів і змінних (див. вище РОЗШИРЕННЯ), але після розгортання  за  журналом,  залежно
       від значень змінних оболонки HISTIGNORE та HISTCONTROL.

       Під  час  запуску історія ініціалізується з файлу, назву якого записано в змінній HISTFILE
       (типово  ~/.bash_history).  Файл,  названий  за  значенням  HISTFILE   обрізається,   якщо
       необхідно,  щоб  кількість  рядків  у ньому не перевищувала значення змінної HISTFILESIZE.
       Якщо значення змінної HISTFILESIZE не встановлено, або встановлено в  null,  нечислове  чи
       від'ємне  числове  значення,  файл  журналу  не  обрізається. Коли читається файл журналу,
       рядки,  що  починаються  з  символу  коментаря  журналу,  за  яким  зразу  слідує   цифра,
       інтерпретуються як позначки часу для наступного рядка журналу. Ці позначки часу виводяться
       за бажанням, залежно від значення змінної HISTTIMEFORMAT. Під  час  виходу  з  оболонки  з
       увімкненою  історією  останні  $HISTSIZE рядків копіюються зі списку журналу до $HISTFILE.
       Якщо увімкнено параметр оболонки  histappend  (див.  опис  shopt  нижче  в  SHELL  BUILTIN
       COMMANDS),  рядки  додаються  до  файлу журналу, інакше файл журналу перезаписується. Якщо
       значення HISTFILE скасовано, або якщо файл журналу  недоступний  для  запису,  історія  не
       зберігається.  Якщо  встановлено змінну HISTTIMEFORMAT, позначки часу записуються до файлу
       журналу і позначаються символом коментаря журналу, тому вони можуть  зберігатися  під  час
       сеансів оболонки. Тут символ коментаря журналу дозволяє відрізнити позначки часу від інших
       рядків журналу. Після збереження журналу файл журналу обрізається, щоб містити  не  більше
       ніж  HISTFILESIZE  рядків.  Якщо  значення  HISTFILESIZE не встановлено, або встановлено в
       null, нечислове чи від'ємне числове значення, файл журналу не обрізається.

       Вбудовану команду fc (див. нижче SHELL BUILTIN COMMANDS) можна використати для показу  або
       редагування  та  повторного  виконання  частини  списку журналу. Вбудовану команду history
       можна використати для показу або змінення списку журналу та керування файлом журналу.  При
       використанні редагування командного рядка, в кожному режимі редагування, який надає доступ
       до списку журналу, доступні команди пошуку.

       Оболонка дозволяє  керувати  тим,  які  команди  зберігаються  в  списку  журналу.  Змінні
       HISTCONTROL  і  HISTIGNORE  може  налаштувати  так,  щоб  оболонка  зберігала  лише  пеану
       підмножину введених команд. Якщо увімкнено параметр оболонки cmdhist, він змушує  оболонку
       намагатися  зберегти  кожен  рядок багаторядкової команди в одному записі журналу, додаючи
       крапку з комою, де необхідно, щоб зберегти  синтаксичну  правильність.  Параметр  оболонки
       lithist змушує оболонку зберігати команду зі вставленими розривами рядків замість крапки з
       комою. Щоб дізнатись про налаштування та скасування параметрів оболонки, див.  нижче  опис
       вбудованої команди shopt під заголовком ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ.

ДОПОВНЕННЯ ЗА ЖУРНАЛОМ

       Оболонка  підтримує  функцію розгортання за журналом, подібну до розгортання за журналом в
       csh. У цьому розділі описано доступні синтаксичні засоби. Цю функцію типово увімкнено  для
       інтерактивних  оболонок  і можна вимкнути за допомогою параметру +H вбудованої команди set
       (див. нижче ВБУДОВАНІ КОМАНДИ  ОБОЛОНКИ).  Неінтерактивні  оболонки  типово  не  виконують
       розширення журналу.

       Розширення  журналу  вводить  слова  зі  списку журналу у вхідний потік, що дозволяє легко
       повторювати команди, вставляти аргументи попередньої команди в поточний рядок уведення або
       швидко виправляти помилки в попередніх командах.

       Розгортання  за  журналом  виконується відразу після прочитання повного рядка, до того, як
       оболонка розбиває його на слова, і виконується для кожного  рядка  окремо  без  урахування
       цитат  у попередніх рядках. Воно відбувається у два етапи. Перший – визначення, який рядок
       зі списку журналу використовувати під час заміни. Другий — вибір частини цього  рядка  для
       включення  до  поточного. Рядок, вибраний з журналу, — це подія, а частини цього рядка, на
       які діють, — слова. Для керування словами доступні різні модифікатори. Рядок  розбивається
       на  слова  так  само,  як і під час читання введених даних, так що кілька слів, розділених
       метасимволами, вкладених у лапки, вважаються одним словом.  Розширення  журналу  вводяться
       через появу символу розгортання за журналом, яким типово є !. Лише зворотна коса риска (\)
       і одинарні лапки можуть містити символ розгортання за журналом, але символ розгортання  за
       журналом  також  розглядається як лапки, якщо він безпосередньо передує закритим подвійним
       лапкам у рядку в подвійних лапках.

       Деякі  символи  блокують  розгортання  журналу,  якщо  з'являються  зразу  після   символу
       розгортання  за  журналом,  навіть  якщо він не в лапках: пропуск, табуляція, новий рядок,
       повернення каретки та =. Якщо встановлено параметр оболонки extglob, (  також  блокуватиме
       розгортання.

       Для   коригування   поведінки   розгортання  за  журналом  можна  скористатися  декількома
       параметрами оболонки із  вбудованою  командою  shopt.  Якщо  увімкнено  параметр  оболонки
       histverify  (див.  опис  вбудованої команди shopt нижче) і використано readline, заміни за
       журналом не буде негайно передано обробнику оболонки.  Замість  цього,  розгорнутий  рядок
       буде  перезавантажено  до  буфера  редагування readline для подальшого внесення змін. Якщо
       використано readline і увімкнено параметр оболонки histreedit, невдалу заміну за  журналом
       буде  перезавантажено  до  буфера  редагування  readline  для  виправлення.  Параметром -p
       вбудованої команди history можна скористатися для перегляду того, якими будуть  результати
       доповнення  за  журналом,  перш ніж ви ним скористаєтеся. Параметром -s вбудованої команди
       history можна скористатися для додавання команд  наприкінці  списку  журналу  без  їхнього
       виконання, так, щоб ними можна було згодом скористатися, викликавши повторно.

       Оболонка   уможливлює   керування  різноманітними  символами,  які  використовує  механізм
       розгортання за журналом (див. опис histchars вище у  розділі  Змінні  оболонки).  Оболонка
       використовує символ коментування у журналі для створення часових позначок при записі файла
       журналу.

   Показник подій
       Показник подій - це посилання на запис командного рядка в списку журналу.  Якщо  посилання
       не абсолютне, події є відносними до поточної позиції в списку журналу.

       !      Розпочати  заміну  за  журналом, якщо далі не вказано пропуск, символ нового рядка,
              символ повернення каретки, = або ( (якщо увімкнено  параметр  оболонки  extglob  за
              допомогою вбудованої команди shopt).
       !n     Посилання на рядок команди n.
       !-n    Посилання на поточну команду мінус n.
       !!     Посилання на попередню команду. Синонім «!-1».
       !рядок Вказує  на  найсвіжішу  команду,  яка  передує  поточній позиції у списку журналу і
              починається з рядка рядок.
       !?рядок[?]
              Вказує на найсвіжішу команду, яка передує  поточній  позиції  у  списку  журналу  і
              починається  з  рядка рядок. Кінцевий ? можна не вказувати, якщо після рядка одразу
              йде  символ  нового  рядка.  Якщо  рядок  не  вказано,  буде  використано  рядок  з
              найсвіжішого  пошуку. Якщо попереднього рядка пошуку не існує, буде повідомлено про
              помилку.
       ^рядок1^рядок2^
              Швидке підставляння. Повторити  попередню  команду,  замінивши  рядок1  на  рядок2.
              Еквівалент “!!:s^рядок1^рядок2^” (див. Модифікатори нижче).
       !#     Увесь рядок команди, який уже введено.

   Показники слів
       Вказівники слів використовують для вибору бажаних слів з події. : відокремлює специфікацію
       події від вказівника слів. Двокрапку можна пропустити, якщо вказівник слова починається  з
       ^,  $,  *,  -  або  %. Слова нумерують з початку рядка. Перше слово матиме номер 0 (нуль).
       Слова буде вставлено до поточного рядка із відокремленням одинарним пробілом.

       0 (нуль)
              Нульове слово. Для оболонки це слово команди.
       n      n-е слово.
       ^      Перший аргумент. Тобто, слово 1.
       $      Останнє слово.  Зазвичай,  це  останній  аргумент,  але  його  буде  розгорнуто  до
              нульового слова, якщо у рядку буде лише одне слово.
       %      Перше  слово, знайдене за останнім пошуком `?рядок?', якщо рядок пошуку починається
              із символу, який є частиною слова.
       x-y    Діапазон слів; «-y» — скорочення «0-y».
       *      Усі слова, окрім нульового. Синонім до «1-$». Не є помилкою використання *, якщо  у
              події точно одне слово — у такому випадку буде повернуто порожній рядок.
       x*     Скорочення від x-$.
       x-     Скорочення  x-$,  подібно  до  x*,  але пропускає останнє слово. Якщо не вказано x,
              типовим значенням є 0.

       Якщо вказано слово-визначення без специфікації події, як подію буде використано  попередню
       команду.

   Модифікатори
       Після  необов'язкового  вказівника  слова  може  бути  послідовність  одного або декількох
       наступних модифікаторів, перед кожним з яких має бути «:».  Модифікатори  модифікують  або
       змінюють слово або слова, які вибрано з події журналу.

       h      Вилучити кінцевий компонент назви файла, лишивши лише початок.
       t      Вилучити усі початкові компоненти назви файла, лишивши лише кінець.
       r      Вилучити кінцевий суфікс у формі .xxx, лишивши лише основну назву.
       e      Вилучити усе, окрім завершального суфікса.
       p      Вивести нову команду, але не виконувати її.
       q      Нейтралізувати підставлені слова, екрануючи подальші підставлення.
       x      Нейтралізувати  замінені  слова,  як  з q, але з поділом на слова за пропусками або
              символами нового рядка. Модифікатори q і x є взаємно виключними;  буде  використано
              лише останній з використаних.
       s/старий/новий/
              Замінити  на  новий перше входження запису старий у рядку події. Можна скористатися
              будь-яким символом як роздільником замість /. Кінцевий роздільник є необов'язковим,
              якщо  він  є  останнім  символом  у  рядку події. Роздільник можна нейтралізувати у
              записах старий і новий одинарним символом зворотної похилої риски.  Якщо  у  записі
              новий використано &, його буде замінено на запис старий. Одинарний символ зворотної
              похилої риски нейтралізуватиме &. Якщо запис старий  є  порожнім,  для  нього  буде
              встановлено  останній  замінений  запис  старий  або, якщо попередніх замінників за
              журналом немає, останній рядок у пошуку !?рядок[?]. Якщо запис  новий  є  порожнім,
              буде вилучено усі відповідні записи старий.
       &      Повторити попередню підстановку.
       g      Спричиняє  застосування  змін  до усього рядка події. Використовують у поєднанні із
              «:s» (наприклад, «:gs/старий/новий/») або «:&».  Якщо  використано  з  «:s»,  можна
              скористатися   будь-яким   роздільником   замість   /,   а  кінцевий  роздільник  є
              необов'язковим, якщо він є останнім символом рядка події. a можна  скористатися  як
              синонімом g.
       G      Застосувати  наступний  модифікатор  «s»  або «&» один раз до кожного слова у рядку
              подій.

ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ

       Якщо не зазначено інакше, кожна вбудована команда, яку документовано у  цьому  розділі  як
       таку,  що  приймає  параметри  із  початковим  -,  приймає  --  для  позначення завершення
       параметрів. Вбудовані команди :, true,  false  і  test/[  не  приймають  параметрів  і  не
       використовують  --  в  особливий  спосіб.  Вбудовані  команди exit, logout, return, break,
       continue, let і shift приймають і обробляють аргументи, які починаються на -, без  потреби
       у  кінцевому  --.  Інші  вбудовані команди, які приймають аргументи, але які не вказано як
       так, що приймають параметри, обробляють аргументи,  що  починаються  з  -,  як  некоректні
       параметри, і потребують -- для запобігання такій обробці.
       : [аргументи]
              Ні  на  що  не  впливає;  команда  нічого не робить, окрім розгортання аргументів і
              виконання будь-яких вказаних переспрямувань. Стан повернення є нульовим.

        .  назва_файла [аргументи]
       source назва_файла [аргументи]
              Прочитати і виконати команди з файла назва_файла у поточному середовищі оболонки  і
              повернути  стан  виходу  останньої  виконаної  команди  з файла назва_файла. Якщо у
              записі назва_файла не міститься символу похилої риски, для  пошуку  каталогу,  який
              містить  файл  назва_файла,  але  назва_файла  не  обов'язково має бути виконуваним
              файлом, буде використано змінну середовища PATH. Файл, пошук якого буде виконано  у
              PATH, має бути виконуваним. Якщо bash працює не у режимі posix, буде виконано пошук
              у поточному каталозі, якщо у  каталогах  PATH  нічого  не  буде  знайдено.  Якщо  у
              вбудованій   команді   shopt   вимкнено   параметр  sourcepath,  пошук  у  PATH  не
              відбуватиметься.  Якщо  вказано  будь-які  аргументи,  вони   стануть   позиційними
              параметрами  при  виконанні файла назва_файла. Якщо аргументи не вказано, позиційні
              параметри лишаться незмінними. Якщо увімкнено параметр -T, . успадкує усі пастки  у
              DEBUG;  якщо  параметр не увімкнено, рядок пасток DEBUG буде збережено і відновлено
              після виклику ., а . скасує пастки DEBUG на час виконання. Якщо -T не  встановлено,
              а  обробленим файлом буде змінено пастку DEBUG, нове значення лишиться чинним після
              завершення виконання .. Повернутим станом буде  стан  виходу  останньої  команди  у
              скрипті  (0,  якщо  не  було  виконано  жодної  команди)  і  «хибність»,  якщо файл
              назва_файла не було знайдено або не вдалося його прочитати.

       alias [-p] [назва[=значення] ...]
              Alias без аргументів або з параметром -p виводить список альтернатив у формі  alias
              назва=значення до стандартного виведення. Якщо вказано аргументи, альтернативу буде
              визначено для кожної назви, для якої вказано значення. Якщо у значенні  є  кінцевий
              пробіл,  наступне  слово  для  перевірки  на  заміну  альтернатив  при  розгортанні
              альтернативи. Для кожної назви у списку аргументів, для якого не вказано  значення,
              буде  виведено назву і значення альтернативи. Alias повертає «істину», якщо вказано
              назви, для яких визначено альтернативи.

       bg [спец_завдання ...]
              Відновити усі призупинені завдання специфікація_завдання у  фоновому  режимі,  так,
              наче  їх було запущено з &. Якщо специфікація_завдання не вказано, буде використано
              дані оболонки щодо поточного завдання. bg специфікація_завдання  повертає  0,  якщо
              запущено  керування  завданнями,  якщо  запущено  із керуванням завданнями, не буде
              виявлено якогось завдання із вказаною специфікацією_завдання, і  не  буде  виявлено
              завдання, яке запущено без керування завданнями.

       bind [-m прив'язка_клавіш] [-lpsvPSVX]
       bind [-m прив'язка_клавіш] [-q функція] [-u функція] [-r послідовність_клавіш]
       bind [-m прив'язка_клавіш] -f назва_файла
       bind [-m прив'язка_клавіш] -x послідовність_клавіш:команда_оболонки
       bind [-m прив'язка_клавіш] послідовність_клавіш:назва_функції
       bind [-m прив'язка_клавіш] послідовність_клавіш:команда_readline
       bind командний-рядок-readline
              Вивести  поточні  прив'язки  клавіш  до функцій у readline, пов'язати послідовність
              клавіш із функцією або макросом readline або встановити значення змінної  readline.
              Кожне  аргумент, який не є параметром, буде командою у форматі, який використовують
              у файлі ініціалізації readline, зокрема .inputrc, але кожну прив'язку або прив'язку
              слід  передавати  як  окремий  аргумент.  Приклад: '"\C-x\C-r": re-read-init-file'.
              Параметри, якщо їх вказано, мають такі призначення:
              -m прив'язка_клавіш
                     Скористатися прив'язкою_клавіш як прив'язкою клавіш,  яка  буде  чинною  для
                     внесення   змін   у   формі   наступних   прив'язок.   Прийнятними   назвами
                     прив'язок_клавіш  є  emacs,  emacs-standard,  emacs-meta,  emacs-ctlx,   vi,
                     vi-move,  vi-command  та  vi-insert.  vi  є еквівалентом vi-command (vi-move
                     також є синонімом); emacs є еквівалентом emacs-standard.
              -l     Показати список всіх функцій readline.
              -p     Показати функції readline та прив'язки таким чином, щоб їх можна було  знову
                     прочитати.
              -P     Показати список назв поточних функцій readline та прив'язок.
              -s     Показати прив'язки послідовностей клавіш readline до макросів та рядків, які
                     вони виводять у такий спосіб, щоб їх можна було повторно прочитати.
              -S     Показати прив'язки послідовностей клавіш readline до макросів та рядків, які
                     вони виводять.
              -v     Показати  змінну  readline  та значення таким чином, щоб їх можна було знову
                     прочитати.
              -V     Показати список назв змінних readline та їхніх значень.
              -f назва_файла
                     Прочитати прив'язки клавіш з файла назва_файла.
              -q функція
                     Зробити запит про те, які клавіші викликають іменований function.
              -u функція
                     Відв'язати всі клавіші, прив'язані до іменованого function.
              -r посл_клавіш
                     Вилучити будь-які поточні прив'язки для keyseq.
              -x посл_клавіш:команда-оболонки
                     Робить так, що при введенні послідовності клавіш посл_клавіш  буде  виконано
                     команду-оболонки.  При  виконанні  команди-оболонки  оболонка встановлює для
                     змінної READLINE_LINE значення вмісту буфера рядків  readline,  для  змінних
                     READLINE_POINT  та READLINE_MARK значення поточного місця позиції вставлення
                     та збереженої позиції  вставлення  (позначки),  відповідно.  Оболонка  надає
                     будь-який     визначений     користувачем    числовий    аргумент    змінній
                     READLINE_ARGUMENT. Якщо аргументу немає,  змінна  лишається  невстановленою.
                     Якщо  виконана  команда  змінює значення будь-якої зі змінних READLINE_LINE,
                     READLINE_POINT або READLINE_MARK, ці нові значення буде відтворено  у  стані
                     редагування.
              -X     Вивести  усі  послідовності  клавіш, які пов'язано із командами оболонки, та
                     пов'язані команди у форматі, яким можна скористатися як вхідними даними.

              Буде повернуто значення 0, якщо не  використано  нерозпізнаного  параметра  або  не
              сталося помилки.

       break [n]
              Вийти  з  циклу for, while, until або select. Якщо вказано n, перервати n рівнів. n
              має бути ≥ 1. Якщо n перевищує кількість вкладених циклів, буде здійснено  вихід  з
              усіх циклів. Повернутим значенням буде 0, якщо n є більшим або рівним 1.

       builtin вбудована-команда-оболонки [аргументи]
              Виконати вказану вбудовану команду оболонки, передавши їй аргументи, і повернути її
              стан виходу. Корисно при визначенні функції, чия назва є такою самою, як  вбудована
              команда  оболонки,  зі  збереженням функціональних можливостей вбудованої команди у
              самій  функції.  У  такий  спосіб  типово  перевизначають  вбудовану  команду   cd.
              Повернутим станом є «хибність», якщо не існує команди вбудована-команда-оболонки.

       caller [вираз]
              Повертає  контекст  будь-якого  активного виклику підпрограми (функції оболонки або
              скрипту, яку виконано за допомогою вбудованих команд . або source). Без  зазначення
              виразу,  caller  виводить  номер  рядка  і  назву  файла початкового коду поточного
              виклику підпрограми. Якщо як вираз використано додатне ціле  число,  caller  виведе
              номер  рядка, назву підпрограми та файл початкового коду, що відповідає відповідній
              позиції у поточному стосі викликів щодо  виконання.  Цими  додатковими  відомостями
              можна  скористатися,  наприклад,  для  виведення  трасування стека. Поточний кадр є
              кадром із номером 0.  Повернутим  значенням  є  0,  якщо  оболонка  виконує  виклик
              підпрограми і вираз відповідає коректній позиції у стосі викликів.

       cd [-L|[-P [-e]] [-@]] [каталог]
              Змінює  поточний  каталог  на  dir.  Якщо  dir не задано, значення використовується
              значення змінної оболонки HOME. Змінна CDPATH визначає  шлях  пошуку  каталогу,  що
              містить  dir:  у  кожному  каталозі  з  CDPATH  шукається  dir. Альтернативні назви
              каталогів у CDPATH відокремлюються двокрапкою (:). Відсутня назва каталогу в CDPATH
              означає  поточний  каталог,  тобто, “.”. Якщо dir починається з косої риски (/), то
              CDPATH не використовується. Параметр -P змушує cd використовувати фізичну структуру
              каталогів, розв'язуючи символьні посилання під час проходження dir і перед обробкою
              екземплярів .. в dir (див. також параметр -P вбудованої команди set);  параметр  -L
              змушує  слідувати  за  символьними посиланнями, розв’язуючи посилання після обробки
              екземплярів .. в dir. Якщо ..  з'являється  в  dir,  вони  обробляються  видаленням
              безпосередньо  попереднього  компонента  шляху  dir, поверненням до косої риски або
              початку dir. Якщо параметр -e задано з -P, і  поточний  робочий  каталог  не  можна
              успішно  визначити  після  успішної  зміни  каталогу, cd поверне статус невдачі. На
              системах, що підтримують параметр -@, він надає  розширені  атрибути,  пов’язані  з
              файлом,  як  каталогом.  Аргумент - перетворюється на $OLDPWD перед спробою змінити
              каталог. Якщо використовується непорожня назва каталогу з  CDPATH,  або  якщо  -  є
              першим   аргументом,   і  зміна  каталогу  пройшла  успішно,  в  стандартний  вихід
              записується абсолютний шлях нового робочого  каталогу.  Якщо  зміна  каталогу  буде
              успішною,  cd встановлює значення для змінної середовища PWD значення адреси нового
              каталогу, а для змінної середовища OLDPWD   встановлює  значення  адреси  поточного
              робочого  каталогу  до  зміни.  Якщо каталог змінено успішно, повертається значення
              істина, а в іншому разі - хибність.

       команда [-pVv] команда [аргумент ...]
              Виконати команду із аргументами, придушивши звичайний пошук функцій оболонки.  Буде
              виконано  лише  вбудовані  команди або команди, які буде знайдено у каталогах PATH.
              Якщо вказано параметр -p, пошук команди  буде  виконано  з  використанням  типового
              значення  для  PATH,  що  гарантує віднайдення усіх стандартних допоміжних програм.
              Якщо вказано параметр -V або -v, буде виведено опис команди. Якщо вказано  параметр
              -v,   буде  показано  одинарне  слово,  що  вказує  команду  або  назву  файла,  що
              використовується для виклику  команди.  Використання  параметра  -V  призводить  до
              виведення  докладнішого  опису. Якщо вказано параметр -V або -v, станом виходу буде
              0, якщо команду було знайдено, і 1, якщо команду не було знайдено. Якщо не  вказано
              жодного  параметра,  і  станеться  помилка  або  команди не вдасться знайти, станом
              виходу буде 127. В усіх інших випадках станом  виходу  вбудованої  команди  команда
              буде стан виходу команди.

       compgen [параметр] [слово]
              Створити  можливі  доповнення-відповідники  для  слова,  відповідно  до параметрів.
              Параметрами можуть бути будь-які параметри, які приймає вбудована команда  complete
              за  винятком  -p  і  -r.  Відповідники буде записано до стандартного виведення. При
              використанні  параметрів  -F  і  -C  різноманітні  змінні   оболонки,   встановлені
              можливостями  з  програмованого  доповнення,  хоча і будуть доступними, не матимуть
              придатних до використання значень.

              Відповідники буде створено у той самий спосіб, наче їх було безпосередньо  створено
              на  основі  специфікації  доповнення із тими самими прапорцями кодом програмованого
              доповнення.  Якщо  вказано  слово,  буде  виведено  лише  ті  доповнення,   які   є
              відповідними слову.

              Повернутим  значенням буде true, якщо не вказано некоректного параметра або не було
              створено жодної відповідності.

       complete [-abcdefgjksuv] [-o параметр-доповнення] [-DEI] [-A action] [-G заг_взірець]  [-W
       список_слів]
              [-F  функція] [-C команда] [-X взірець_фільтрування] [-P префікс] [-S суфікс] назва
              [назва ...]
       complete -pr [-DEI] [назва ...]
              Вказати, як має бути доповнено аргументи кожної із назв. Якщо вказано  параметр  -p
              або  не вказано жодних параметрів, буде виведено наявні специфікації у спосіб, який
              надає змогу повторно використати їх  як  вхідні  дані.  Використання  параметра  -r
              призведе  до  вилучення  специфікації  доповнення  для  кожної  з назв або, якщо не
              вказано жодної назви,  усіх  специфікацій  доповнення.  Використання  параметра  -D
              вказує  на  тек,  що  інші  вказані  параметри і дії слід застосувати до «типового»
              (“default”) доповнення команд;  тобто  доповнення,  яке  використовуватиметься  для
              команд,  для  яких  раніше  не було визначено доповнення. Використання параметра -E
              вказує на те, що інші вказані параметри та дії  слід  застосувати  до  «порожнього»
              (“empty”)  доповнення  команд;  тобто доповнення, яке використовують для порожнього
              рядка. Параметр -I вказує на те, що інші вказані параметри і дії  слід  застосувати
              до доповнення початкового слова, яке не є встановленням значення, у рядку або після
              роздільника команд, зокрема ; або |, тобто,  зазвичай,  доповнення  назви  команди.
              Якщо  вказано  декілька  параметрів,  -D  має  вищий  пріоритет  за -E, а обидва ці
              параметри мають вищий пріоритет за -I. Якщо вказано будь-який з параметрів  -D,  -E
              або   -I,   усі   інші   аргументи   назва   буде   проігноровано;   ці  доповнення
              застосовуватимуться лише до випадку, який вказано параметром.

              Процедуру застосування цих  специфікацій  доповнення  при  спробі  доповнення  слів
              описано вище у розділі above under Programmable Completion.

              Інші  параметри,  якщо  їх  вказано,  мають описані нижче призначення. Аргументи до
              параметрів -G, -W і -X (і, якщо потрібно, параметрів -P і -S) слід брати  у  лапки,
              щоб захистити їх від розгортання до виклику вбудованої команди complete.
              -o параметр-доповнення
                      параметр-доповнення  контролює  декілька  аспектів  поведінки compspec поза
                      простою генерацією доповнень. параметр-доповнення може бути одним з:
                      bashdefault
                              Виконати решту типових доповнень bash,  якщо  compspec  не  генерує
                              жодних відповідників.
                      default Використати типове доповнення назви файлу з readline, якщо compspec
                              не генерує жодних відповідників.
                      dirnames
                              Виконати доповнення назви каталогу, якщо compspec не генерує жодних
                              відповідників.
                      filenames
                              Повідомити   readline,   що  назви  файлів  створює  compspec,  щоб
                              уможливити будь-яку обробку,  яка  є  специфічною  до  назв  файлів
                              (зокрема   додавання  символу  похилої  риски  до  назв  каталогів,
                              нейтралізацію  спеціальних   символів   або   придушення   кінцевих
                              пробілів). Призначено для використання у функціях оболонки.
                      noquote Повідомити readline, що не слід брати у лапки завершені слова, якщо
                              вони є назвами файлів (типово, назви файлів беруть у лапки).
                      nosort  Повідомити readline, що  не  слід  упорядковувати  список  можливих
                              завершень за абеткою.
                      nospace Повідомити   readline,   що   не  слід  дописувати  пробіл  (типова
                              поведінка) до слів, які завершуються на кінці рядка.
                      plusdirs
                              Після створення усіх відповідників, які  визначено  compspec,  буде
                              виконано   спробу   доповнення   назви   каталогу.   Усі   знайдені
                              відповідники буде додано до результатів інших дій.
              -A дія  Для створення списку можливих завершень може бути використано одну з  таких
                      дій:
                      alias   Альтернативні назви. Також можна вказати як -a.
                      arrayvar
                              Назви змінних-масивів.
                      binding Назви прив'язки клавіш у readline.
                      builtin Назви вбудованих команд оболонки. Також можна вказати як -b.
                      команда Назви команд. Також можна вказати як -c.
                      directory
                              Назви каталогів. Також можна вказати як -d.
                      disabled
                              Назви вимкнених вбудованих команд оболонки.
                      enabled Назви увімкнених вбудованих команд оболонки.
                      export  Назви експортованих змінних оболонки. Можна також вказати як -e.
                      файл    Назви файлів. Також можна вказати як -f.
                      function
                              Назви функцій оболонки.
                      group   Назви груп. Також можна вказати як -g.
                      helptopic
                              Теми довідки, які приймає вбудована команда help.
                      hostname
                              Назви вузлів, як їх вказано у файлі, на який вказує змінна оболонки
                              HOSTFILE.
                      job     Назви завдань, якщо активним є керування  завданнями.  Також  можна
                              вказати як -j.
                      keyword Зарезервовані слова оболонки. Також можна вказати як -k.
                      running Назви запущених завдань, якщо активним є керування завданнями.
                      service Назви служб. Також можна вказати як -s.
                      setopt  Коректні аргументи до параметра -o вбудованої команди set.
                      shopt   Назви  параметрів  оболонки,  які  приймаються  вбудованою командою
                              shopt.
                      signal  Назви сигналів.
                      stopped Назви зупинених завдань, якщо активним є керування завданнями.
                      user    Імена користувачів. Також можна вказати як -u.
                      variable
                              Назви усіх змінних оболонки. Можна також вказати як -v.
              -C команда
                      Команду буде виконано у середовищі підоболонки, а  її  виведені  дані  буде
                      використано  як  можливі варіанти завершення. Аргументи передають так само,
                      як і для параметра -F.
              -F функція
                      Функцію оболонки функція буде виконано у поточному середовищі оболонки. При
                      виконанні  функції першим аргументом ($1) буде назва команди, чиї аргументи
                      слід доповнити, другим аргументом ($2) буде слово, яке  слід  доповнити,  а
                      третім аргументом ($3) буде слово, яке передує слову, яке слід доповнити, у
                      поточному рядку команди. По  завершенню  обробки  можливі  доповнення  буде
                      отримано зі значення змінної-масиву COMPREPLY.
              -G заг_взірець
                      Для  створення  варіантів можливих завершень буде розгорнуто взірець шляхів
                      заг_взірець.
              -P префікс
                      На початку усіх можливих завершень після застосування усіх інших параметрів
                      буде дописано префікс.
              -S суфікс
                      Наприкінці усіх можливих завершень після застосування усіх інших параметрів
                      буде дописано суфікс.
              -W список_слів
                      Список слів буде поділено з використанням символів  у  спеціальній  змінній
                      IFS  як роздільників, а кожне отримане слово буде розгорнуто. У списку_слів
                      буде використано нейтралізацію оболонки для забезпечення  роботи  механізму
                      обробки слів, які містять метасимволи або символи оболонки, у значенні IFS.
                      Можливими доповненнями є елементи списку-результату, який відповідає слову,
                      пошук доповнення якого шукає оболонка.
              -X взірець_фільтрування
                      взірець_фільтрування   —   взірець   у  форматі,  який  використовують  для
                      розгортання шляхів. Його буде застосовано  до  списку  можливих  доповнень,
                      який створено попередніми параметрами та аргументами, а усі доповнення, які
                      відповідають взірцю_фільтрування  буде  вилучено  зі  списку.  Використання
                      початкового  !  у  взірці_фільтрування  призведе до обертання взірця. Таким
                      чином,  буде  вилучено  лише  ті   доповнення,   які   не   збігаються   із
                      взірцем_фільтрування.

              Повернутим значенням буде «істина», якщо не буде вказано некоректного параметра, не
              буде вказано параметра, відмінного від -p або -r,  без  аргументу  назва,  не  буде
              спроби  вилучити специфікацію доповнення для назви, для якої не існує специфікації,
              або не станеться помилка під час додавання специфікації доповнення.

       compopt [-o параметр] [-DEI] [+o параметр] [назва]
              Змінити параметри доповнення для усіх  назв,  відповідно  до  параметрів,  або  для
              поточного  доповнення,  якщо  не  вказано  назв.  Якщо  параметрів не вказано, буде
              виведено варіанти доповнення для кожної назви  або  поточного  доповнення.  Можливі
              значення параметра є коректні значення для вбудованої команди complete, які описано
              вище. Параметр -D вказує на те,  що  до  «типового»  доповнення  команди  має  бути
              застосовано  інші задані параметри. Типове доповнення буде використано для команди,
              для якої раніше не було визначено доповнення. Параметр -E вказує, що інші параметри
              слід  застосувати  до  доповнення  «порожніх»  команд.  Доповненням порожніх команд
              вважають доповнення для порожнього  рядка.  Параметр  -I  вказує,  що  інші  задані
              параметри  слід  застосовувати  до  початкового слова рядка, яке не є встановленням
              значення, або після роздільника команди, зокрема ; або |. Зазвичай,  це  доповнення
              назви команди.

              Повернутим значенням буде «істина», якщо не буде вказано некоректного параметра, не
              буде спроби змінити параметри для назви, для якої не існує специфікації доповнення,
              або не станеться помилки виведення.

       continue [n]
              Відновити  наступну  ітерацію  зовнішнього циклу for, while, until або select. Якщо
              вказано n, відновлення відбудеться на n-му зовнішньому циклі. n має бути ≥ 1.  Якщо
              n  є  більшим за кількість зовнішніх циклів, буде відновлено ітерацію на останньому
              зовнішньому циклі (циклі найвищого рівня). Повернутим значенням буде 0,  якщо  n  є
              більшим або рівним 1.

       declare [-aAfFgiIlnrtux] [-p] [назва[=значення] ...]
       typeset [-aAfFgiIlnrtux] [-p] [назва[=значення] ...]
              Оголосити  змінні  і/або  задати їхні атрибути. Якщо задано назви, вивести значення
              змінних. Використання параметра -p призведе до виведення атрибутів  і  значень  для
              кожної  назви.  Якщо  використано  -p  з  аргументами  назва,  додаткові параметри,
              відмінні від -f і -F, буде проігноровано. Якщо задано -p без аргументів назва, буде
              показано  атрибути  і  значення усіх змінних, для яких вказано атрибути додатковими
              параметрами. Якщо не задано інших  параметрів  з  -p,  declare  виведе  атрибути  і
              значення  усіх  змінних  оболонки. Параметр -f обмежить виведення функцій оболонки.
              Параметр -F забороняє виведення  визначень  функцій  —  буде  виведено  лише  назву
              функції  та атрибути. Якщо увімкнено параметр оболонки extdebug за допомогою shopt,
              буде також виведено назву файла коду та номер рядка для кожної назви.  Параметр  -F
              неявним  чином  додає  параметр -f. Параметр -g призводить до примусового створення
              змінних або внесення до них змін у загальному просторі назв,  навіть  якщо  declare
              виконується  у функції оболонки. Параметр буде проігноровано в усіх інших випадках.
              Використання параметра -I призводить  до  успадкування  атрибутів  (окрім  атрибуту
              nameref)  і  значень локальними змінними із тими самими назвами, що і у зовнішньому
              щодо них просторі назв. Якщо наявної змінної виявлено не буде, початково,  локальна
              змінна  вважається  такою,  для  якої  не  встановлено  значення.  Вказаними  нижче
              параметрами можна скористатися для  обмеження  виведення  до  змінних  із  вказаним
              атрибутом або для надання змінним атрибутів:
              -a     Кожна назва є індексованою змінною-масивом (див. Масиви above).
              -A     Кожна назва є асоціативною змінною-масивом (див. Масиви above).
              -f     Використовувати лише назви функцій.
              -i     Змінну   буде   оброблено   як  ціле  число;  арифметичні  обчислення  (див.
                     АРИФМЕТИЧНІ ОБЧИСЛЕННЯ above) буде виконано під  час  встановлення  значення
                     для змінної.
              -l     При  встановленні  значення  змінної  усі літери верхнього регістру (великі)
                     буде перетворено на  літери  нижнього  регістру  (малі).  Атрибут  верхнього
                     регістру буде вимкнено.
              -n     Надати  кожній  назві  атрибут nameref, зробивши її іменованим посиланням на
                     іншу змінну. Ця інша змінна визначається  значенням  назви.  Усі  посилання,
                     встановлення  значень та внесення змін до атрибутів назви, окрім тих, у яких
                     використано або змінено сам атрибут -n, буде виконано над  змінною,  на  яку
                     посилається  значення  назви.  Атрибут  nameref  не  можна  застосовувати до
                     змінних-масивів.
              -r     Зробити назви придатними лише для читання. Цим назвам потім  не  можна  буде
                     надати  значення  за допомогою інструкцій встановлення значень або скасувати
                     встановлення значення.
              -t     Надати усім записам назва атрибут трасування. Трасовані функції успадковують
                     пастки  DEBUG і RETURN від оболонки, звідки їх викликано. Атрибут трасування
                     не має особливого значення для змінних.
              -u     При встановленні значення змінної усі літери нижнього регістру  (малі)  буде
                     перетворено на літери верхнього регістру (великі). Атрибут нижнього регістру
                     буде вимкнено.
              -x     Позначити  назви  для  експортування  до  наступних  команд   за   допомогою
                     середовища.

              Якщо  скористатися «+» замість «-», атрибут буде вимкнено, за тим винятком, що +a і
              +A не можна використовувати для знищення змінних-масивів і +r не вилучатиме атрибут
              «лише  читання».  Якщо  їх використано у функції, команди declare і typeset роблять
              усі записи назва локальними, подібно до застосування команди local, якщо не вказано
              параметра  -g.  Якщо  після  назви  змінної  вказано  =значення,  для  змінної буде
              встановлено значення значення. Якщо використано -a або -A  і  синтаксис  складеного
              встановлення   значень   для   створення  змінних-масивів,  додаткові  атрибути  не
              працюватимуть, ж до наступних встановлень значень. Повернуте значення дорівнюватиме
              0,  аж  доки  не буде знайдено некоректний параметр, буде зроблено спробу визначити
              функцію за допомогою ``-f foo=bar'', буде зроблено спробу встановити  значення  для
              призначеної  лише  для  читання  змінної,  буде зроблено спробу встановити значення
              змінної-масиву без використання синтаксису складеного встановлення  значення  (див.
              Масиви  above),  ,  одна із назв не є назвою змінної оболонки, буде зроблено спробу
              вимкнути стан «лише для читання» для призначеної лише  для  читання  змінної,  буде
              зроблено  спробу  вимкнути  стан масиву для змінної-масиву або буде зроблено спробу
              показати функції, якої не існує, за допомогою -f.

       dirs [-clpv] [+n] [-n]
              Без параметрів виводить список каталогів, які зараз запам’ятовуються. Типово  назви
              каталогів  виводяться  в  одному рядку, розділені пропусками. Каталоги додаються до
              списку за допомогою команди pushd; команда popd вилучає записи зі списку. Першим  у
              стеку завжди є поточний каталог.
              -c     Очищує стос каталогів вилученням усіх записів.
              -l     Створює  список  із  використанням  повних шляхів; у типовому форматі списку
                     використовують тильду для позначення домашнього каталогу.
              -p     Вивести стос каталогів із одним записом на кожен рядок.
              -v     Вивести стос каталогів із одним записом на  кожен  рядок  із  додаванням  до
                     кожного запису його індексу у стосі.
              +n     Показує  n-ий  запис,  рахуючи зліва списку, показаного dirs при виклику без
                     параметрів; відлік починається з нуля.
              -n     Показує n-ий запис, рахуючи справа списку, показаного dirs при  виклику  без
                     параметрів; відлік починається з нуля.

              Повертається значення 0, крім випадків, коли вказано недійсний параметр або індекси
              n виходять за кінець стеку каталогів.

       disown [-ar] [-h] [специфікація-завдання ... | pid ... ]
              Без параметрів, вилучити специфікація-завдання з  таблиці  активних  завдань.  Якщо
              специфікація-завдання  не  вказано,  і не вказано ні параметра -a, ні параметра -r,
              буде   використано   поточне   завдання.   Якщо   вказано   параметр   -h,   записи
              специфікація-завдання  не  буде  вилучено  з  таблиці,  але буде позначено так, щоб
              завданню не було надіслано SIGHUP,  якщо  оболонка  отримує  SIGHUP.  Якщо  вказано
              аргумент  специфікація-завдання,  параметр  -a  означатиме вилучення або позначення
              усіх завдань; параметр  -r  без  аргументу  специфікація-завдання  обмежує  дію  до
              запущених  завдань.  Повернутим значенням буде 0, якщо специфікація-завдання вказує
              на коректне завдання.

       echo [-neE] [аргумент ...]
              Вивести відокремлені пробілами  аргументи,  завершивши  виведення  символом  нового
              рядка. Повернутим станом буде 0, якщо не станеться помилки запису. Якщо вказано -n,
              кінцевий символ нового  рядка  буде  придушено.  Якщо  вказано  параметр  -e,  буде
              увімкнено  обробку  вказаних  нижче  екранованих  символом  зворотної похилої риски
              символів. Параметр -E вимикає обробку цих екранованих символів, навіть у  системах,
              де  їх  типово  буде оброблено. Параметром оболонки xpg_echo можна скористатися для
              динамічного визначення того, чи echo типово  розгортатиме  ці  екрановані  символи.
              echo  не  оброблятиме  --,  як  кінець параметрів. echo оброблятиме такі екрановані
              послідовності символів:
              \a     гудок (дзвінок)
              \b     backspace
              \c     приховати подальший вивід
              \e
              \E     символ скасування
              \f     подавання бланку
              \n     новий рядок
              \r     повернення каретки
              \t     горизонтальна табуляція
              \v     вертикальна табуляція
              \\     зворотна похила
              \0nnn  восьмибітовий символ, значенням якого є вісімкове nnn  (від  нуля  до  трьох
                     вісімкових цифр)
              \xHH   восьмибітовий  символ,  значенням  якого  є  шістнадцяткове значення HH (від
                     однієї до двох шістнадцяткових цифр)
              \uHHHH символ Unicode (ISO/IEC 10646), чиїм  значенням  є  шістнадцяткове  значення
                     HHHH (від однієї до чотирьох шістнадцяткових цифр)
              \UHHHHHHHH
                     символ  Unicode  (ISO/IEC  10646),  чиїм значенням є шістнадцяткове значення
                     HHHHHHHH (від однієї до восьми шістнадцяткових цифр)

       enable [-a] [-dnps] [-f назва_файла] [назва ...]
              Увімкнути або вимкнути вбудовані команди  оболонки.  Вимикання  вбудованої  команди
              уможливлює  використання програми на диску, яка має таку саму назву, що і вбудована
              команда оболонки, яку слід виконати без визначення повного шляху  до  файла,  хоча,
              зазвичай,  оболонка шукає вбудовані команди, перш ніж виконувати програми на диску.
              Якщо використано -n, буде вимкнено усі команди, які визначаються аргументом  назва;
              якщо  ж  цей параметр не вказано, назви буде увімкнено. Наприклад, щоб скористатися
              виконуваним файлом test, який зберігається в одному з каталогів,  описаних  змінною
              PATH,  а не відповідною вбудованою командою оболонки, слід віддати команду ``enable
              -n test''.  Параметр -f означає, що слід завантажити нову вбудовану  команду  назва
              із  об'єкта  спільного  використання  назва_файла  у  системах,  у яких передбачено
              підтримку  динамічного  завантаження.  Bash  використовуватиме   значення   змінної
              BASH_LOADABLES_PATH  як  списку  каталогів,  які  відокремлено двокрапками, де слід
              шукати файл із назвою назва_файла.  The default is  system-dependent.  Параметр  -d
              призведе  до вилучення вбудованої команди, які раніше було завантажено за допомогою
              -f. Якщо не буде вказано  аргументи  назва  або  якщо  вказано  параметр  -p,  буде
              виведено  список  вбудованих  команд  оболонки.  Якщо  не  вказано інших аргументів
              параметрів, список складатиметься із усіх увімкнених  вбудованих  команд  оболонки.
              Якщо  вказано -n, буде виведено лише вимкнені вбудовані команди. Якщо вказано -a, у
              виведеному списку  будуть  усі  вбудовані  команди  із  позначками  щодо  того,  чи
              увімкнено  ці  команди. Якщо вказано -s, виведення буде обмежено особливі вбудовані
              команди POSIX. Якщо не буде вказано параметрів і назва не  буде  назвою  вбудованої
              команди оболонки, enable спробує завантажити назву з об'єкта спільного використання
              із назвою назва так, наче  командою  була  ``enable  -f  name  name  .   Повернутим
              значенням  є  0,  якщо  назва  не  є  вбудованою командою оболонки або не станеться
              помилка  під  час  завантаження  нової  вбудованої  команди  з  об'єкта   спільного
              використання.

       eval [аргумент ...]
              Аргументи буде прочитано і з'єднано в одну команду. Потім цю команду буде прочитано
              і виконано оболонкою, а її стан  виходу  буде  повернуто  як  значення  eval.  Якщо
              аргументів не буде вказано або усі аргументи будуть порожніми, eval поверне 0.

       exec [-cl] [-a назва] [команда [аргументи]]
              Якщо  вказано  аргумент  команда,  ця  команда  замінить  оболонку.  Нового процесу
              створено не буде. Аргументи стануть аргументами команди. Якщо вказано параметр  -l,
              оболонка  додасть  дефіс на початку нульового аргументу, переданого команді. Це те,
              що робить login(1). Використання параметра -c призводить до того, що  команду  буде
              виконано  із  порожнім  середовищем.  Якщо  вказано параметр -a, оболонка передасть
              назву як нульовий аргумент виконаної команди. Якщо команду не може бути виконано  з
              певної  причини,  неінтерактивна  оболонка завершить роботу, якщо не буде увімкнено
              параметра оболонки execfail. Якщо параметр оболонки буде увімкнено, буде  повернуто
              повідомлення  про  помилку. Інтерактивна оболонка поверне повідомлення про помилку,
              якщо файл неможливо виконати. Підоболонка безумовно завершить роботу,  якщо  спроба
              виконати  exec  буде  невдалою.  Якщо  команду  не  буде вказано, буде виконано усі
              переспрямування у поточній оболонці і повернуто  стан  0.  Якщо  станеться  помилка
              переспрямування, буде повернуто стан 1.

       exit [n]
              Наказує  оболонці  завершити  роботу  із  станом  n. Якщо n не вказано, стан виходу
              визначатиметься станом виходу останньої виконаної  команди.  До  завершення  роботи
              оболонки буде виконано пастку EXIT.

       export [-fn] [назва[=слово]] ...
       export -p
              Вказані   назви  буде  позначено  для  автоматичного  експортування  до  середовища
              наступних  виконаних  команд.  Якщо  вказано  параметра  -f,  назви   вважатимуться
              посиланнями  на функції. Якщо не вказано жодної назви або якщо вказано параметр -p,
              буде виведено назви усіх експортованих змінних. Зазначення параметра -n призведе до
              вилучення  властивості  експортування з кожної назви. Якщо після назви змінної буде
              вказано =слово, змінній буде надано значення слово. Команда  export  повертає  стан
              виходу  0,  якщо  не  буде  виявлено  некоректного  параметра, жодна з назв не буде
              некоректною назвою змінної оболонки або не буде вказано -f  із  назвою,  яка  не  є
              назвою функції.

       fc [-e назва_редактора] [-lnr] [перший] [останній]
       fc -s [взірець=замінник] [команда]
              Перша  форма  визначає  діапазон  команд  у  рядках від перший до останній у списку
              журналу і виводить  їх  для  повторного  виконання  або  редагування  і  повторного
              виконання.  Значення  перший  і  останній  можна  вказати  як  рядок (для виявлення
              останньої команди, яка починалася із вказаного рядка) або як номер (індекс у списку
              журналу,  де  від'ємні  значення  використовують  як  відступ  від  номера поточної
              команди). У списку значення першого або останнього рівні 0 є еквівалентом -1,  -0 є
              еквівалентом  визначення поточної команди (зазвичай, команди fc). В інших випадках,
              0 є еквівалентом -1, а -0 є некоректним значенням. Якщо останній  не  вказано,  для
              нього  буде  встановлено  значення  поточної  команди у списку (отже, ``fc -l -10''
              виводить останні 10 команд) і до першого в інших випадках. Якщо значення перший  не
              вказано,  для нього буде встановлено значення, що відповідає попередній команді для
              редагування і -16 для списку.

              Параметр -n придушує виведення номерів команд у списку. Параметр -r змінює  порядок
              команд  у  списку  на зворотний. Якщо вказано параметр -l, команди буде виведено до
              стандартного виведення. Якщо цей параметр не  вказано,  для  редагування  файла,  у
              якому   містяться   ці   команди,   буде  викликано  редактор,  заданий  аргументом
              назва_редактора. Якщо назву_редактора не вказано, буде використано значення змінної
              FCEDIT  та  значення  змінної  EDITOR, якщо значення FCEDIT не встановлено. Якщо не
              встановлено жодної змінної, буде використано vi Коли  редагування  буде  завершено,
              редаговані команди буде повторено і виконано.

              У  другій  формі  команду  буде  повторно  виконано після заміни кожного екземпляра
              взірця на замінник. Команду буде оброблено у той самий спосіб, що і аргумент перший
              вище.  Корисною  альтернативною  формою  використання  у  поєднанні з цим є ``r="fc
              -s"'', отже, введення ``r cc''  виконує  останню  команду,  починаючи  з  ``cc''  а
              введення ``r'' повторно виконує останню команду.

              Якщо  використано  першу  форму,  буде  повернуто значення 0, якщо не буде виявлено
              некоректного параметра або якщо  вказані  перший  або  останній  рядки  журналу  не
              належать  до  припустимого  діапазону.  Якщо  буде  вказано параметр -e, повернутим
              значення буде повернуте значення останньої  виконаної  команди  або  помилка,  якщо
              станеться  помилка  із  тимчасовим  файлом  команд.  Якщо  використано другу форму,
              повернутим станом буде стан повторно  виконаної  команди,  якщо  команда  не  задає
              коректного рядка журналу. У інших випадках fc повертає помилку.

       fg [специфікація_завдання]
              Відновити  роботу  завдання специфікація_завдання в основному режимі і зробити його
              поточним  завданням.  Якщо  аргументу  специфікація_завдання   не   вказано,   буде
              використано  дані  оболонки  щодо  поточного  завдання.  Повернутим  значенням буде
              значення, яке повернуто командою, яку переведено в основний режим, або повідомлення
              про  помилку, якщо запущено із вимкненим керуванням завданнями або, якщо запущено з
              увімкненим керуванням завданнями, якщо специфікація_завдання не визначає коректного
              завдання  або  специфікація_завдання  визначає  завдання.  яке  було  запущено  без
              керування завданнями.

       getopts рядок_параметрів назва [аргумент ...]
              getopts використовують підпрограми  оболонки  для  обробки  позиційних  параметрів.
              Аргумент  рядок_параметрів  містить  символи  параметрів, які слід розпізнати; якщо
              після  символу  вказано  двокрапку,  параметр  повинен  мати  аргумент,  який  слід
              відокремити  від  параметра  пробілом.  Символами  параметра не можуть бути символи
              двокрапки та знаку  питання.  Під  час  кожного  виклику  getopts  додає  наступний
              параметр до змінної середовища назва, ініціалізуючи змінну назва, якщо її не існує,
              а індекс наступного аргументу, який має бути оброблено, буде  записано  до  змінної
              OPTIND.  OPTIND буде ініціалізовано до 1 кожного разу, коли буде викликано оболонку
              або скрипт оболонки. Якщо параметр потребує аргументу, getopts записує аргумент  до
              змінної  OPTARG.  Оболонка  не  виконує  автоматично  скидання  OPTIND; змінну слід
              скидати вручну між викликами getopts у межах одного  виклику  оболонки,  якщо  слід
              змінити набір параметрів.

              Якщо  буде  виявлено  кінець  параметрів,  getopts  завершить  роботу із поверненим
              значенням, що перевищує нуль. Для OPTIND буде встановлено індекс першого відмінного
              від параметра аргументу і для назви буде встановлено значення ?.

              Зазвичай,   getopts  обробляє  позиційні  параметри,  але  якщо  вказано  додаткові
              значення, як значення аргумент, getopts оброблятиме ці аргументи замість позиційних
              параметрів.

              getopts   може  повідомляти  про  помилки  у  два  способи.  Якщо  першим  символом
              рядка_параметрів є двокрапка,  буде  використано  мовчазний  режим  звітування  про
              помилки.  У  звичному  режимі  роботи діагностичні повідомлення буде виведено, якщо
              буде виявлено некоректні параметри або пропущені  аргументи  параметрів.  Якщо  для
              змінної  OPTERR  встановлено  значення 0, повідомлень про помилки не буде показано,
              навіть якщо першим символом рядка_параметрів не буде двокрапка.

              Якщо буде виявлено некоректний параметр, getopts записує ? до назва і, якщо команда
              працює  не  у  мовчазному  режимі,  виводить  повідомлення  про  помилку і скасовує
              встановлення значення OPTARG. Якщо  getopts  працює  у  мовчазному  режимі,  символ
              знайденого  параметра буде записано до OPTARG, а діагностичне повідомлення виведено
              не буде.

              Якщо не буде знайдено обов'язкового аргументу і  getopts  працює  не  у  мовчазному
              режимі, буде встановлено значення знаку питання (?) для назви, скасовано визначення
              OPTARG і виведено діагностичне  повідомлення.  Якщо  getopts  працює  у  мовчазному
              режимі,  буде  встановлено  значення  двокрапки  (:)  для  назви,  для  OPTARG буде
              встановлено значення знайденого символу параметра.

              getopts повертає «істину», якщо буде знайдено параметр,  вказаний  або  невказаний.
              Повертає «хибність», якщо буде виявлено кінець параметрів або станеться помилка.

       hash [-lr] [-p назва_файла] [-dt] [назва]
              Кожного разу, коли викликано hash, буде визначено і збережено у пам'яті повний шлях
              до команди назва пошуком у каталогах змінної $PATH. Усі раніше збережені у  пам'яті
              шляхи  буде відкинуто. Якщо буде вказано параметр -p, пошук шляху виконано не буде,
              а як повну назву файла команди буде використано назву_файла. Використання параметра
              -r призведе до того, що оболонка витре з пам'яті усіх збережені місця. Використання
              параметра -d призведе до вилучення з пам'яті усіх збережених  записів  назва.  Якщо
              вказано  параметр -t, буде виведено повний шлях для кожної назви. Якщо буде вказано
              декілька аргументів назва із параметром -t, назву  буде  виведено  перед  хешованим
              повним  шляхом. Використання параметра -l призведе до того, що дані буде виведено у
              форматі, яким можна буде скористатися як вхідними даними. Якщо  аргументів  вказано
              не  буде  або  якщо  буде  вказано лише -l, оболонка виведе відомості щодо команд у
              пам'яті. Станом повернення є «істина»,  якщо  було  знайдено  назву  і  не  вказано
              некоректних параметрів.

       help [-dms] [взірець]
              Показати корисні відомості щодо вбудованих команд. Якщо вказано взірець, help надає
              докладну довідку для усіх команд, назви  яких  відповідають  взірцю  взірець.  Якщо
              взірець  не  вказано,  виводить довідку для усіх вбудованих команд та для структури
              керування оболонкою.
              -d     Показати короткий опис для кожного взірця
              -m     Показати опис кожного взірця у форматі, який подібний до сторінок підручника
              -s     Показати лише короткий опис користування для кожного взірця

              Стан повернення буде рівним  0,  якщо  буде  знайдено  хоча  б  одну  команду,  яка
              відповідає взірцю.

       history [n]
       history -c
       history -d зсув
       history -d початок-кінець
       history -anrw [назва_файла]
       history -p аргумент [аргумент ...]
       history -s аргумент [аргумент ...]
              Без  параметрів,  вивести список журналу команд з номерами рядків. Рядки, позначені
              *, змінено. З аргументом n перелічує лише останні n рядків.  Якщо  змінна  оболонки
              HISTTIMEFORMAT  встановлена і не null, вона використовується як форматний рядок для
              strftime(3), щоб показати мітку часу, пов'язану з кожним показаним записом журналу.
              Між  відформатованою міткою часу та рядком журналу не робиться пропуск. Якщо надано
              назву файлу, її використовують як назву файлу журналу;  Якщо  ні,  використовується
              значення HISTFILE. Якщо є параметри, їхні значення такі:
              -c     Спорожнити список журналу вилученням з нього усіх записів.
              -d відступ
                     Вилучити   запис  журналу  на  позиції  відступ.  Якщо  значення  відступ  є
                     від'ємним, його буде відраховано назад від позиції, яка на одиницю більша за
                     останню  позицію  у  журналі.  Отже, від'ємні індекси відраховують від кінця
                     журналу, а індекс -1 означає поточну команду history -d.
              -d початок-кінець
                     Вилучити з журналу діапазон записів між позиціями початок і кінець, включно.
                     Додатні  і від'ємні значення початок і кінець буде оброблено в описаний вище
                     спосіб.
              -a     Дописати «нові» рядки журналу  до  файла  журналу.  Це  рядки  журналу,  які
                     введено  з  моменту початку поточного сеансу bash, але які ще не дописано до
                     файла журналу.
              -n     Прочитати рядки журналу, які ще не прочитано з файла  журналу  до  поточного
                     списку  журналу.  Це  рядки, які дописано до файла журналу з моменту початку
                     поточного сеансу bash.
              -r     Прочитати вміст файла журналу і дописати його до поточного списку журналу.
              -w     Записати поточний список журналу до файла журналу, перезаписавши вміст файла
                     журналу.
              -p     Виконати  заміну за журналом для наступних аргументів і вивести результат до
                     стандартного виведення.  Не  зберігає  результати  до  списку  журналу.  Для
                     вимикання звичного розгортання журналу усі аргументи має бути взято у лапки.
              -s     Зберегти  аргументи  у  списку  журналу  як  єдиний  запис. Перед додаванням
                     аргументів останню команду у списку журналу буде вилучено.

              Якщо встановлено змінну HISTTIMEFORMAT, інформація мітки часу, асоційована з кожним
              записом  журналу записується у файл журналу, з позначкою символу коментарю журналу.
              Коли файл журналу зчитується, рядки, що  починаються  з  символу  коментарю,  після
              якого  одразу  йде  цифра,  інтерпретуються,  як мітки часу для відповідного запису
              журналу. Значення повернення є 0,  якщо  не  знайдено  неправильну  опцію,  сталася
              помилка  під  час  читання  або  запису файлу журналу, надано неправильний аргумент
              відступ або діапазон для -d, або розширення журналу   надане,  як  аргумент  до  -p
              зазнало невдачі.

       jobs [-lnprs] [ специфікація_завдання ... ]
       jobs -x команда [ аргументи ... ]
              Перша форма показує активні завдання. Параметри мають наступні значення:
              -l     Вивести список ідентифікаторів процесів разом з іншою інформацією.
              -n     Вивести  відомості лише про завдання, стан яких було змінено з моменту, коли
                     користувача востаннє інформували про їхній стан.
              -p     Вивести лише ідентифікатор процесу, який є лідером групи процесів завдання.
              -r     Показати лише завдання, що працюють.
              -s     Показати лише зупинені завдання.

              Якщо вказано аргумент специфікація_завдання, виведення  буде  обмежено  відомостями
              щодо   відповідного  завдання.  Буде  повернуто  стан  0,  якщо  не  буде  виявлено
              некоректного параметра або некоректної заданої специфікації_завдання.

              Якщо надано опцію -x, jobs замінює будь-який jobspec, знайдений в command або  args
              відповідним  ІД  групи процесів, та виконує command передаючи йому args, і вертаючи
              його стан виходу.

       kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
       kill -l|-L [sigspec | exit_status]
              Надіслати сигнал, вказаний через sigspec або signum процесу,  вказаного  через  pid
              або jobspec. sigspec є або назва сигналу (ігноруючи регістр), напр.  SIGKILL (з або
              без префіксу SIG) або  номер  сигналу;  signum  є  номером  сигналу.  Якщо  sigspec
              відсутній,  тоді береться SIGTERM. Аргумент -l виводить назви сигналів. Якщо надано
              будь-який аргумент, коли вказано -l, виводяться  назви  сигналів,  що  відповідають
              кожному  аргументу, і значення виходу є 0. Аргумент exit_status для -l є числом, що
              вказує або номер сигналу або стан виходу для процесу, вбитого сигналом. Опція -L  є
              рівною  -l.  kill  вертає правду, якщо принаймні один сигнал успішно надіслано, або
              неправду, якщо сталася помилка або знайдено неправильну опцію.

       let arg [arg ...]
              Кожен аргумент є арифметичним виразом,  який  треба  обчислити  (див.   АРИФМЕТИЧНЕ
              ОЦІНЮВАННЯ  above).   Якщо  останній  arg  обраховано  в  0,  let  вертає 1; інакше
              вертається 0.

       local [option] [назва[=value] ... | - ]
              Для кожного аргументу буде створено локальну змінну  із  назвою  назва,  якій  буде
              надано  значення значення. Параметром може бути будь-який з параметрів, які приймає
              команда declare. Якщо local використано у  функції,  змінна  назва  матиме  область
              видимості,  яку  буде  обмежено функцією і її дочірніми об'єктами. Якщо назвою є -,
              набір параметрів оболонки стане локальним для функції, з якої викликано local:  для
              параметрі  оболонки,  які  змінено  за  допомогою  вбудованої команди set всередині
              функції,  буде  відновлено  їхні  початкові  значення  при  поверненні  з  функції.
              Відновлення   спрацює   так,  наче  було  виконано  послідовність  команд  set  для
              відновлення значень,  які  змінні  мали  до  виконання  функції.  Якщо  не  вказано
              операндів,  local  записує  список  локальних  змінних  до  стандартного виведення.
              Використання local поза функціями є помилкою. Команда повертає стан 0,  якщо  local
              використано  всередині  функції,  вказано  коректне  значення  назва  і  назва не є
              призначеною лише для читання змінною.

       logout Вийти з оболонки входу в систему.

       mapfile  [-d  роздільник]  [-n  кількість]  [-O   початок]   [-s   кількість]   [-t]   [-u
       дескриптор_файла] [-C зворотний_виклик] [-c частка] [масив]
       readarray   [-d   роздільник]   [-n  кількість]  [-O  початок]  [-s  кількість]  [-t]  [-u
       дескриптор_файла] [-C зворотний_виклик] [-c частка] [масив]
              Прочитати рядки зі стандартного джерела вхідних даних до  змінної  —  індексованого
              масиву  масив, або прочитати ці дані з файла із дескриптором дескриптор_файла, якщо
              вказано параметр -u. Типовим масивом є змінна MAPFILE. Параметри, якщо їх  вказано,
              мають такі призначення:
              -d     Перший  символ  із  роздільник використовується для закінчення кожного рядка
                     введення замість символу  нового  рядка.  Якщо  рядок  роздільник  порожній,
                     mapfile закінчить рядок, коли прочитає символ NUL.
              -n     Скопіювати  не  більше  кількість рядків. Якщо значенням кількість є 0, буде
                     скопійовано усі рядки.
              -O     Розпочати встановлення значень масиву з індексу початок. Типовим індексом  є
                     0.
              -s     Відкинути перших count прочитаних рядків.
              -t     Вилучити  кінцевий роздільник (типовим роздільником є символ нового рядка) з
                     кожного прочитаного рядка.
              -u     Прочитати  рядки  з  файла  із  дескриптором  дескриптор_файла,  а   не   зі
                     стандартного джерела вхідних даних.
              -C     Обчислювати  зворотний_виклик  кожного  разу,  коли  буде  прочитано  частку
                     рядків. Частку буде задано параметром -c.
              -c     Вказати кількість рядків, які  буде  прочитано  між  послідовними  викликами
                     зворотного_виклику.

              Якщо  -C  вказано  без  -c, типовий квант дорівнює 5000. Коли обчислюється callback
              оцінюється, йому, як додаткові  аргументи,  надаються  індекс  наступного  елемента
              масиву,  який  потрібно присвоїти, і рядок, який потрібно присвоїти цьому елементу.
              callback обчислюється після прочитання рядка, але до присвоєння  значення  елементу
              масиву.

              Якщо  початок  не  вказано явно, mapfile спорожнить масив до встановлення для нього
              значень.

              mapfile повертає стан успіху, якщо не  буде  виявлено  некоректних  параметрів  або
              аргументів параметрів, якщо масив не буде некоректним або таким, для якого не можна
              встановлювати значення, і якщо масив є індексованим масивом.

       popd [-n] [+n] [-n]
              Вилучає запис зі стосу каталогів. Нумерація елементів виконується  з  0  з  першого
              каталогу  зі  списку  dirs.  Без  аргументів  вилучає  верхній  каталог  зі стосу і
              переходить до нового  верхнього  каталогу.  Аргументи,  якщо  вказано,  мають  таке
              значення:
              -n     Придушує звичайну зміну каталогу при вилученні каталогів зі стосу, отже, дії
                     відбуваються лише із стосом.
              +n     Вилучає  n-ий  запис,  рахуючи  зліва  списку,   показаного   dirs;   відлік
                     починається  з  нуля  зі стосу. Приклад: ``popd +0'' вилучає перший каталог,
                     ``popd +1'' другий.
              -n     Вилучає  n-ий  запис,  рахуючи  справа  списку,  показаного   dirs;   відлік
                     починається  з  нуля.  Приклад: ``popd -0'' вилучає останній каталог, ``popd
                     -1'' передостанній.

              Якщо до верхнього елемента у стосі каталогів буде внесено  зміни,  і  було  вказано
              параметр  B,  popd  використовує  вбудовану  команду cd для переходу до каталогу на
              вершині стосу. Якщо спроба виконання cd завершиться невдало, popd поверне ненульове
              значення.

              У  інших випадках popd повертає значення «хибність», якщо буде виявлено некоректний
              параметр, стос каталогів є порожнім або вказано запис  стосу  каталогів,  якого  не
              існує.

              Якщо  виконання  команди  popd  буде  успішним,  bash  поверне  dirs,  щоб показати
              остаточний вміст стосу каталогів, і поверне стан 0.

       printf [-v змінна] формат [аргументи]
              Записати сформатовані аргументи до стандартного виходу під контролем формат.  Опція
              -v призначає вивід змінній var замість друкування на стандартний вихід.

              Формат  є  символьним  рядком,  що  містить три типи об'єктів: звичайні символи, що
              просто  копіюються  на  стандартний  вихід,  керівна  послідовність  символів,  які
              перетворюємо і копіюємо на стандартний вихід, та специфікації формату, кожна з яких
              друкує  наступний  подальший  аргумент.  Окрім  стандартних  специфікацій   формату
              printf(1), printf інтерпретує наступні розширення:
              %b     примушує  printf  розкривати  керівні  послідовності  із  символом зворотної
                     похилої риски відповідно до аргументу, так само як echo -e.
              %q     примушує printf виводити  відповідний  argument  у  форматі,  що  може  бути
                     перевикористаний, як вхід для оболонки.
              %Q     подібний  до  %q,  але  застосовує  будь-яку  надану  точність  до аргументу
                     аргумент до його нейтралізації.
              %(формат_дати)T
                     примушує printf виводити рядок  дати-часу,  що  є  результатом  використання
                     datefmt,  як  рядку  формату  для  strftime(3).  Відповідне argument є цілим
                     числом, що відповідає кількості секунд з початку епохи.  Можна  вживати  два
                     спецзначення:  -1  представляє поточний час, і -2 представляє час, коли було
                     запущено оболонку. Якщо аргументів не вказано, конвертація поводиться,  ніби
                     надано -1. Це є винятком зі звичайної поведінки printf.

              Директиви  %b,  %q  та  %T  всі використовують аргументи ширини та точності поля зі
              специфікації формату та записують стільки байтів з  (або  використовують  для  того
              широкого  поля)  розширеного  аргументу,  що  за  звичай  має  більше символів, ніж
              оригінал.

              Аргументи для специфікаторів нерядкових форматів розглядаються як константи  C,  за
              винятком,  коли  дозволено  передній знак плюса чи мінуса, і якщо передній символ є
              одинарною або подвійною лапкою, значенням є значення ASCII наступного символу.

              Формат буде використано належну кількість разів для форматування  усіх  аргументів.
              Якщо у форматі визначено більше аргументів, ніж вказано, зайві специфікації формату
              буде  оброблено  так,  наче  їм  передано  нульові  значення  або  порожні   рядки,
              відповідно.  Повернутим  значенням буде нуль при успіху і значення, яке є відмінним
              від нуля, якщо станеться помилка.

       pushd [-n] [+n] [-n]
       pushd [-n] [каталог]
              Додає каталог на верхівку стосу або обертах стос  так,  щоб  на  верхівці  опинився
              поточний  робочий  каталог.  Якщо  не  вказано  аргументів, pushd міняє місцями два
              верхніх  елементи  стосу  каталогів.  Аргументи,  якщо  їх  вказано,   мають   таке
              призначення:
              -n     Придушує  звичайну  зміну  каталогу  при  ротації або додаванні каталогів до
                     стосу, отже, дії відбуваються лише із стосом.
              +n     Прокручує стек так, щоб  n-ий  каталог  (відлік  ведеться  з  лівої  частини
                     списку, показаного dirs і починається з нуля) опинився на вершині списку.
              -n     Прокручує  стек  так,  щоб  n-ий  каталог  (відлік ведеться з правої частини
                     списку, показаного dirs і починається з нуля) опинився на вершині списку.
              каталог
                     Додає каталог до стосу каталогів на верхню позицію

              Після внесення змін до стосу, якщо було вказано  параметр  -n,  pushd  використовує
              вбудовану  команду  cd  для  переходу  до  каталогу  на  вершині стосу. Якщо спроба
              виконання cd завершиться невдало, pushd поверне ненульове значення.

              В інших випадках, якщо не вказано аргументів, pushd повертає 0, якщо стос каталогів
              не є порожнім. При циклічному переході стосом каталогів pushd повертає 0, якщо стос
              каталогів не є порожнім або буде вказано елемент стосу каталогів, якого не існує.

              Якщо виконання команди  pushd  буде  успішним,  bash  поверне  dirs,  щоб  показати
              остаточний вміст стосу каталогів.

       pwd [-LP]
              Надрукувати  абсолютний  шлях  поточного робочого каталогу. Якщо додано параметр -P
              або ввімкнено  фізичний параметр -o для вбудованої команди set,  надрукований  шлях
              не  міститиме  символьних посилань. Якщо використовується параметр -L, надрукований
              шлях може містити символьні посилання. Стан повернення дорівнює  0,  якщо  під  час
              читання  назви  поточного  каталогу  не  виникло  помилки  і  вказано  лише  дійсні
              параметри.

       read  [-ers]  [-a  назва]  [-d  роздільник]  [-i  текст]   [-n   кількість_символів]   [-N
       кількість_символів] [-p запит] [-t час_очікування] [-u дескриптор_файла] [назва ...]
              Буде  прочитано  один  рядок  зі  стандартного джерела вхідних даних або з файла із
              дескриптором дескриптор_файла, який передано як аргумент параметра -u,  рядок  буде
              поділено  на  слова,  як  це  описано above у розділі Поділ на слова, і перше слово
              стане значенням першої назви, друге слово — другої назви тощо. Якщо кількість  слів
              буде  більшою  за  кількість назв, залишок списку слів разом із роздільниками стане
              значенням останньої назви. Якщо з потоку вхідних даних буде прочитано  менше  слів,
              ніж  назв,  решті назв буде надано порожні значення. Для поділу рядка на слова буде
              використано символи з IFS. Також буде використано ті  самі  правила,  які  оболонка
              використовує для розгортання (описано above у розділі Поділ на слова). Для усування
              спеціального  призначення  наступного  прочитаного  символу  або   для   позначення
              продовження   рядка  можна  скористатися  символом  зворотної  похилої  риски  (\).
              Параметри, якщо їх вказано, мають таке призначення:
              -a назва_масиву
                     Слова присвоюються послідовним індексам змінної-масиву aname, починаючи з 0.
                     aname  є  не  встановленим  перед  присвоєнням нових значень. Інші аргументи
                     назва нехтуються.
              -d роздільник
                     Перший символ із роздільник використовується для  закінчення  кожного  рядка
                     введення  замість символу нового рядка. Якщо рядок роздільник порожній, read
                     закінчить рядок, коли прочитає символ NUL.
              -e     Якщо стандартні вхідні дані надходять з термінала, для отримання рядка  буде
                     використано readline (див.  READLINE above)
                      readline  використовує  поточні (або типові, якщо редагування рядків раніше
                     не було активним) параметри редагування, але використовує типове  доповнення
                     назв файлів самої бібліотеки readline.
              -i текст
                     Якщо readline використовується для читання рядка, перед початком редагування
                     в буфер редагування поміщається текст.
              -n к-ть_символів
                     read повертається після прочитання кількість_символів символів, а не  очікує
                     повного  рядка  введення,  але зважає на роздільник, якщо перед роздільником
                     прочитано менше ніж кількість_символів символів.
              -N к-ть_символів
                     read повертається після прочитання саме кількість_символів  символів,  а  не
                     чекає  на  повний  рядок  введення,  якщо  не  зустрічається EOF або read не
                     перестає працювати. Символи-роздільники, які зустрічаються у введених даних,
                     не  обробляються  спеціально і не викликають повернення з read, доки не буде
                     прочитано кількість_символів символів. Результат не розбивається на  символи
                     в  IFS;  сенс  у  тому,  що  змінній примвоюються саме прочитані символи (за
                     винятком зворотної похилої риски; див. нижче параметр -r).
              -p запит
                     Вивести запит до  стандартного  виведення  помилок,  без  кінцевого  символу
                     нового рядка, до спроб читання будь-яких вхідних даних. Запит буде показано,
                     лише якщо вхідні дані надходять з термінала.
              -r     Символ зворотної похилої риски не працює як символ екранування.  При  цьому,
                     символ  зворотної  похилої  риски  вважається  частиною рядка. Зокрема, пару
                     «зворотна  похила  риска  —  новий  рядок»  не  можна   використовувати   як
                     послідовність продовження рядка.
              -s     Мовчазний  режим.  Якщо  ввід  йде  з  термінала, символи не відбиваються на
                     вивід.
              -t час_очікування
                     Спричиняє перевищення часу очікування у read  і  повертає  повідомлення  про
                     помилку,  якщо  не  буде  прочитати  повний рядок вхідних даних (або вказану
                     кількість символів) протягом час_очікування секунд.  Часом  очікування  може
                     бути  десяткове  число  із  дробовою  частиною  після десяткової крапки. Цей
                     параметр працюватиме, лише якщо read читає вхідні дані з  термінала,  каналу
                     або  іншого  особливого  файла — він не працюватиме при читанні зі звичайних
                     файлів. При  перевищенні  часу  очікування  у  read  команда  read  зберігає
                     будь-які  частково  прочитані  вхідні  дані  до вказаної змінної назва. Якщо
                     значенням часу_очікування є  0,  read  повертатиме  керування  негайно,  без
                     спроби  прочитати  якісь  дані. Станом виходу є 0, якщо вхідні дані доступні
                     для файла із вказаним дескриптором або читання поверне EOF. Якщо це не  так,
                     стан  повернення буде ненульовим. Стан виходу буде більшим за 128, якщо буде
                     перевищено час очікування.
              -u дескриптор_файла
                     Читати вхід з дескриптора дескриптор_файла.

              Якщо не вказано назв, прочитаний рядок, без кінцевого роздільника,  але  без  інших
              змін, буде встановлено як значення для змінної REPLY. Станом виходу буде нуль, якщо
              не буде виявлено  символу  кінця  файла,  не  буде  перевищено  час  очікування  на
              завершення  read  (у  цьому  випадку  стан  завершення перевищуватиме 128), не буде
              помилки встановлення значення (зокрема,  встановлення  значення  для  змінної,  яку
              призначено  лише для читання) або не буде вказано некоректного дескриптора файла як
              аргументу -u.

       readonly [-aAf] [-p] [назва[=слово] ...]
              Вказані назви буде позначено як так, які призначено лише для читання; значення  цих
              назв  не  можна  буде змінити наступними інструкціями зі встановлення значень. Якщо
              вказано параметр -f, буде також позначено функції, які буде знайдено  за  критерієм
              пошук  назви. Використання параметра -a обмежує змінні лише індексованими масивами,
              а параметра -A —  лише  асоціативними  масивами.  Якщо  вказано  обидва  параметри,
              пріоритет  матиме  -A.  Якщо аргументів назва не вказано, або якщо вказано параметр
              -p, буде виведено список усіх  придатних  лише  для  читання  назв.  Для  обмеження
              виведених   даних  піднабором  набору  призначених  лише  для  читання  назв  можна
              скористатися іншими параметрами. Параметр -p призводить  до  виведення  у  форматі,
              яким  можна  скористатися  як  вхідними  даними.  Якщо  після назви змінної вказати
              =слово, для змінної буде встановлено значення слово. Станом повернення буде 0, якщо
              не  вказано некоректного параметра, усі назви є коректними назвами змінних оболонки
              і -f вказано із назвою, яка є назвою функції.

       return [n]
              Спричиняє  припинення  виконання  функції  і  повернення  значення,   яке   вказано
              аргументом  n,  до місця, з якого було викликано функцію. Якщо n не вказано, станом
              повернення буде стан повернення останньої команди, яку виконано  у  межах  функції.
              Якщо  return  виконано  обробником пасток, останньою командою, яку буде використано
              для визначення стану, буде остання команда, яку було виконано до обробника  пасток.
              Якщо return виконано у межах пастки DEBUG, останньою командою, яку буде використано
              для визначення стану, буде остання команда, яку було виконано обробником пастки  до
              виклику  return. Якщо return використано поза межами функції, але під час виконання
              скрипту командою . (source), оболонка припинить виконання скрипту і поверне  або  n
              або  стан  виходу  останньої  команди,  яку  було виконано у межах скрипту, як стан
              виходу скрипту. Якщо вказано n, значенням повернення будуть його останні  8  бітів.
              Стан  повернення  буде  ненульовим, якщо для вказано return нечисловий аргумент або
              команду використано поза функцією і не під час виконання скрипту за допомогою . або
              source.  Перед поверненням до виконання після функції або скрипту буде виконано усі
              команди, які пов'язано із пасткою RETURN.

       set [-abefhkmnptuvxBCEHPT] [-o назва-параметра] [--] [-] [аргумент ...]
       set [+abefhkmnptuvxBCEHPT] [+o назва-параметра] [--] [-] [аргумент ...]
              Без параметрів, буде виведено назву і значення усіх  змінних  оболонки  у  форматі,
              яким можна повторно скористатися як вхідними даними для встановлення або повторного
              встановлення поточного набору змінних. Значення змінних, які  призначено  лише  для
              читання,  не  може бути змінено. У режимі posix буде виведено лише змінні оболонки.
              Виведені дані  буде  упорядковано  відповідно  до  поточної  локалі.  Якщо  вказано
              параметри,   вони   встановлюватимуть  значення  або  скасовуватимуть  встановлення
              значення атрибутів оболонки. Усі аргументи, які лишаться після обробки  параметрів,
              вважатимуться  значенням позиційний параметрів. Їх буде використано як значення, за
              порядком, $1, $2, ... $n. Параметри, якщо їх вказано, мають таке призначення:
              -a      Кожній змінній  або  функції,  що  створюється  або  змінюється,  надається
                      атрибут експорту та позначка для експорту в середовище наступних команд.
              -b      Повідомляти  про  стан  припинених  фонових  завдань  негайно,  а  не перед
                      наступним  основним  запитом.  Діє  лише  тоді,  коли  увімкнено  керування
                      завданнями.
              -e      Вийти  негайно, якщо конвеєр (який може місити одну просту команду), список
                      або складена команда  (див.   ГРАМАТИКА  ОБОЛОНКИ  above),  завершується  з
                      ненульовим  станом.  Вихід з оболонки не відбувається, якщо команда, яка не
                      працює, є частиною списку команд відразу після ключового  слова  while  або
                      until,  частиною  тесту  після  зарезервованих  слів  if або elif, частиною
                      будь-якої команди, виконуваної в списках && або  ||,  за  винятком  команди
                      після  останнього && або ||, будь-якою командою в конвеєрі, крім останньої,
                      або якщо повернуте командою  значення  інвертовано  за  допомогою  !.  Якщо
                      складена  команда, відмінна від підоболонки, повертає ненульовий стан через
                      невдачу  команди  тоді,  коли  нехтувалося  -e,   вихід   з   оболонки   не
                      відбувається.  Якщо  встановлено  пастку  на  ERR,  вона  виконується перед
                      виходом із оболонки. Цей параметр застосовується до середовища оболонки  та
                      кожного  із середовищ підоболонки окремо (див.  СЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД
                      above), , і може призвести до виходу з підоболонки, перш  ніж  у  ній  буде
                      виконано всі команди.

                      Якщо  складена  команда  або  функція  оболонки виконується в контексті, де
                      нехтується -e, на жодну з команд, виконуваних у межах складеної команди або
                      тіла  функції,  не вплине параметр -e, навіть якщо -e встановлено і команда
                      повертає  стан  відмови.  Якщо  складена  команда  або   функція   оболонки
                      встановлює  -e  під  час  виконання  в  контексті,  де  -e  нехтується,  це
                      налаштування не матиме жодного ефекту до завершення складеної  команди  або
                      команди, що містить виклик функції.
              -f      Вимкнути розгортання шляхів.
              -h      Запам'ятати  розташування  команд, у якому оболонка шукає їх для виконання.
                      Типово увімкнено.
              -k      Усі аргументи у формі інструкцій із встановлення значень, а не лише ті, які
                      передують назві команди, буде записано до середовища для команди.
              -m      Режим  спостереження.  Керування завданнями увімкнено. Типово, цей параметр
                      увімкнено для  інтерактивних  оболонок  у  системах,  де  передбачено  таку
                      підтримку  (див.  КЕРУВАННЯ ЗАВДАННЯМИ above).  Усі процеси працюватимуть в
                      окремій групі процесів. При завершенні фонового  завдання  оболонка  виведе
                      рядок зі станом виходу завдання.
              -n      Прочитати  команди,  але  не  виконувати  їх.  Цим  можна  скористатися для
                      перевірки скрипту оболонок на синтаксичні  помилки.  Буде  проігноровано  у
                      режимі інтерактивної оболонки.
              -o назва_параметра
                      option-name може бути одним з наступних:
                      allexport
                              Те саме, що -a.
                      braceexpand
                              Те саме, що і -B.
                      emacs   Скористатися  інтерфейсом  редагування рядка команди у стилі emacs.
                              Такий режим буде типово увімкнено для інтерактивної оболонки,  якщо
                              оболонку  не  було  запущено  із  параметром  --noediting. Це також
                              стосується режиму редагування, який буде використано для read -e.
                      errexit Те саме, що і -e.
                      errtrace
                              Те саме, що і -E.
                      functrace
                              Те саме, що і -T.
                      hashall Те саме, що і -h.
                      histexpand
                              Те саме, що і -H.
                      history Увімкнути журнал команд, як описано above  у  розділі  ЖУРНАЛ.  Цей
                              параметр типово увімкнено в інтерактивних оболонках.
                      ignoreeof
                              Результат   буде   таким,   наче   використано   команду   оболонки
                              ``IGNOREEOF=10'' виконано (див. Shell Variables above).
                      keyword Те саме, що і -k.
                      monitor Те саме, що і -m.
                      noclobber
                              Те саме, що і -C.
                      noexec  Те саме, що і -n.
                      noglob  Те саме, що і -f.
                      nolog   Наразі ігнорується.
                      notify  Те саме, що і -b.
                      nounset Те саме, що і -u.
                      onecmd  Те саме, що і -t.
                      physical
                              Те саме, що і -P.
                      pipefail
                              Якщо  встановлено,  значення,  що  повертає  конвеєр,  є  значенням
                              останньої   (крайньої  правої)  команди  для  виходу  з  ненульовим
                              статусом  або  нулем,  якщо  всі  команди  в  конвеєрі  завершились
                              успішно. Цей параметр вимкнено за замовчуванням.
                      posix   Змінити  поведінку  bash  там,  де  типові  дії  відрізняються  від
                              стандарту POSIX так, щоб відповідати стандарту (режим posix).  Див.
                              розділ  ТАКОЖ ПЕРЕГЛЯНЬТЕ below , де наведено посилання на документ
                              із подробицями щодо того, як режим posix впливає на поведінку bash.
                      privileged
                              Те саме, що і -p.
                      verbose Те саме, що і -v.
                      vi      Скористатися інтерфейсом редактора командного  рядка  у  стилі  vi.
                              Також  стосується інтерфейсу редагування, який використовується для
                              read -e.
                      xtrace  Те саме, що і -x.
                      Якщо -o  вказано  без  назва_параметра,  буде  виведено  значення  поточних
                      параметрів.  Якщо вказано +o без назва_параметра, до стандартного виведення
                      буде виведено послідовність команд set  для  відтворення  поточних  значень
                      параметрів.
              -p      Увімкнути  привілейований  режим.  У  цьому  режимі  обробка  файлів $ENV і
                      $BASH_ENV  не  виконуватиметься,  функції  оболонки  не   успадковуватимуть
                      середовище,  а змінні SHELLOPTS, BASHOPTS, CDPATH і GLOBIGNORE, якщо вони є
                      у  середовищі,  буде  проігноровано.  Якщо  оболонку  буде   запущено   від
                      ідентифікатора  ефективного  користувача  (групи),  який  не  збігається із
                      ідентифікатор справжнього користувача (групи) і  не  вказано  параметр  -p,
                      ідентифікатор   користувача   буде  змінено  на  ідентифікатор  справжнього
                      користувача,  і  ці  дії  буде  виконано  для  ідентифікатора   справжнього
                      користувача.   Якщо   під   час   запуску  вказано  параметр  -p,  скидання
                      ідентифікатор ефективного користувача не відбуватиметься.  Вимикання  цього
                      параметра  призведе  до  того,  що ідентифікатори ефективного користувача і
                      групи  буде   встановлено   за   значеннями   ідентифікаторів   справжнього
                      користувача і групи.
              -r      Увімкнути  обмежений  режим оболонки. Встановлення цього параметра не можна
                      скасувати після того, як його було встановлено.
              -t      Вийти після прочитання й виконання однієї команди.
              -u      Вважати наявність змінних і параметрів, окрім особливих  параметрів  «@»  і
                      «*»  або змінних-масивів із підписами «@» або «*», без встановлених значень
                      помилкою при виконанні розгортання параметрів. Якщо  буде  зроблено  спробу
                      розгорнути  змінну або параметр без встановленого значення, оболонка виведе
                      повідомлення про помилку і, якщо вона працює не  в  інтерактивному  режимі,
                      завершить роботу із ненульовим станом виходу.
              -v      Друкувати входові рядки оболонки під час виконання.
              -x      Після  розгортання  усіх простих команд, команди for, команди case, команди
                      select та арифметичної команди for вивести розгорнуте значення  PS4,  потім
                      команду і її розгорнуті аргументи або пов'язаний список слів.
              -B      Оболонка  виконує  розкриття  фігурних  дужок (див. Brace Expansion above).
                      Типово увімкнено.
              -C      Якщо встановлено, bash не перезаписуватиме наявний файл,  якщо  використано
                      оператори  переспрямовування  >,  >& та <>. Перезапису при створення файлів
                      виведених даних у таких  випадках  можна  досягти  використанням  оператора
                      переспрямовування >| замість >.
              -E      Якщо  встановлено,  будь-які  пастки  на  ERR  буде  успадковано  функціями
                      оболонки,  заміною  команд  та  командами,  які  виконують   у   середовищі
                      підоболонок.   У   таких   випадках,   за   звичних  умов,  пастка  ERR  не
                      успадковується.
              -H      Увімкнути підставлення за журналом у стилі  !.  Цей  параметр  буде  типово
                      використано, якщо оболонка є інтерактивною.
              -P      Якщо  встановлено,  оболонка  не  розв’язує  символьних  посилань  під  час
                      виконання таких команд, як  cd,  які  змінюють  поточний  робочий  каталог.
                      Натомість  вона використовує фізичну структуру каталогів. Типово, bash, під
                      час виконання команд, які змінюють поточний каталог, дотримується логічного
                      ланцюжка каталогів.
              -T      Якщо  встановлено,  будь-які  пастки  на  DEBUG  і  RETURN буде успадковано
                      функціями оболонки, заміною команд та командами, які виконують у середовищі
                      підоболонок.  У  таких  випадках, за звичних умов, пастки DEBUG і RETURN не
                      успадковуються.
              --      Якщо  за  цим  параметром  не  вказано  аргументів,   значення   позиційних
                      параметрів  буде  скасовано.  Якщо аргументи вказано, позиційним параметрам
                      буде надано значення за аргументами, навіть якщо деякі з них починатимуться
                      з -.
              -       Сигналізує  про закінчення варіантів, спричиняє присвоєння решти аргументів
                      позиційним параметрам. Параметри  -x  і  -v  вимикаються.  Якщо  аргументів
                      немає, позиційні параметри не змінюються.

              Типово  параметри  вимкнено,  якщо  не  вказано  інше.  Використання  +  замість  -
              призводить до вимкнення цих параметрів. Параметри також можна вказати як  аргументи
              для  виклику оболонки. Поточний набір параметрів можна знайти в $-. Стан повернення
              завжди істинний, якщо не зустрічається недійсний параметр.

       shift [n]
              Позиційні параметри з n+1 ... перейменовуються на $1 ....  Параметри,  представлені
              числами  від  $#  вниз до $#-n+1 втрачають значення. n має бути невід’ємним числом,
              меншим або рівним $#. Якщо n дорівнює 0, параметрине змінюються. Якщо n не  задано,
              воно  вважається рівним 1. Якщо n більше від $#, позиційні параметри не змінюються.
              Якщо n більше від $# або менше від нуля, повертається  стан  більший  від  нуля;  в
              іншому випадку - 0.

       shopt [-pqsu] [-o] [назва_параметра ...]
              Перемикає  значення  параметрів,  які  керують  необов’язковою поведінкою оболонки.
              Налаштування можуть бути перерахованими нижче, або, якщо використовується  параметр
              -o,  доступні  з  параметром  -o  вбудованої  команди  set.  Без  параметрів  або з
              параметром -p,  виводиться  список  усіх  параметрів,  які  можна  налаштувати,  із
              зазначенням  того,  чи  встановлено  кожен  із  них;  якщо  задано  optnames, вивід
              обмежується цими параметрами. Параметр -p призводить  до  виведення  у  формі,  яку
              можна повторно використати як вхідні дані. Інші параметри мають такі значення:
              -s     Увімкнути (встановити) кожен optname.
              -u     Вимкнути (скинути) кожен optname.
              -q     Пригнічує   звичайне   виведення  (тихий  режим);  стан  повернення  вказує,
                     встановлено чи ні optname. Якщо для optname передано  багато  аргументів  із
                     -q, якщо всі optnames, увімкнено, повертається стан нуль; в іншому випадку -
                     відмінний від нуля.
              -o     Обмежує значення  назви_параметра  тими  назвами,  які  було  визначено  для
                     параметра -o вбудованої команди set.

              Якщо -s або -u використано без аргументів optname, shopt показує лише ті параметри,
              які встановлено або вимкнено відповідно. Якщо не зазначено інше, то параметри shopt
              типово вимкнено (не встановлено).

              Стан повернення при переліку параметрів дорівнює нулю, якщо всі optnames увімкнено,
              в іншому випадку  -  відмінний  від  нуля.  Під  час  встановлення  або  скасування
              параметрів статус повернення дорівнює нулю, крім випадку, коли optname не є дійсним
              параметром оболонки.

              Список параметрів shopt:

              assoc_expand_once
                      Якщо  встановлено,  оболонка  пригнічує  багаторазове  обчислення  індексів
                      асоціативного масиву протягом обчислення значення арифметичного виразу, під
                      час  виконання  вбудованих  програм,  які  можуть  виконувати  присвоювання
                      змінних,   і   під   час   виконання   вбудованих  модулів,  які  виконують
                      розіменування масивів.
              autocd  Якщо встановлено, назва команди, яка є назвою  каталогу,  виконується  так,
                      ніби  вона  є  аргументом  для команди cd. Цей параметр використовують лише
                      інтерактивні оболонки.
              cdable_vars
                      Якщо встановлено, аргумент вбудованої команди  cd,  який  не  є  каталогом,
                      вважається назвою змінної, значенням якої є каталог, до якого слід перейти.
              cdspell Якщо  встановлено,  незначні  помилки  в  написанні  компонента  каталогу в
                      команді cd буде виправлено. Виявляються помилки: символи в іншому регістрі,
                      відсутній  символ  та один зайвий символ. Якщо помилку знайдено, друкується
                      виправлена   назва   файлу,   і   команда   продовжується.   Цей   параметр
                      використовується лише інтерактивними оболонками.
              checkhash
                      Якщо встановлено, bash перевіряє, чи існує команда, знайдена в геш-таблиці,
                      перш ніж спробувати її виконати. Якщо гешована  команда  більше  не  існує,
                      виконується звичайний пошук шляху.
              checkjobs
                      Якщо  встановлено,  bash, перед виходом з інтерактивної оболонки, перелічує
                      стани будь-яких зупинених і виконуваних  завдань.  Якщо  виконуються  якісь
                      завдання,  це  призводить  до  того,  що вихід буде відкладено до наступної
                      спроби виходу без  відповідної  команди  (див.  вище  КЕРУВАННЯ  ЗАВДАННЯМИ
                      above).  Оболонка завжди відкладає вихід, якщо якісь завдання зупинено.
              checkwinsize
                      Якщо  встановлено,  bash  після  кожної  зовнішньої (не вбудованої) команди
                      перевіряє розмір  вікна  та,  якщо  необхідно,  оновлює  значення  LINES  і
                      COLUMNS. Типово цей параметр увімкнено.
              cmdhist Якщо  встановлено,  bash  намагається  зберегти  всі  рядки  багаторядкової
                      команди в одному записі журналу.  Це  дозволяє  легко  повторно  редагувати
                      багаторядкові  команди.  Цей  параметр типово увімкнено, але діє він лише в
                      тому випадку, якщо ввімкнено історію команд, як  описано  above  у  розділі
                      ЖУРНАЛ.
              compat31
              compat32
              compat40
              compat41
              compat42
              compat43
              compat44
              compat50
                      Ці  аспекти  контролю режиму сумісності оболонки (див.  SHELL COMPATIBILITY
                      MODE below).

              complete_fullquote
                      Якщо встановлено, bash під час завершення  бере  в  лапки  всі  метасимволи
                      оболонки  в  назвах  файлів  і каталогів. Якщо не встановлено, bash видаляє
                      метасимволи, такі як знак долара, з  набору  символів,  які  братимуться  в
                      лапки  в  заповнених  назвах  файлів,  коли  ці  метасимволи  з’являться  в
                      посиланнях на змінні оболонки в словах, які потрібно заповнити. Це означає,
                      що знаки долара в назвах змінних, які розгортаються до каталогів, не будуть
                      у лапках; однак будь-які знаки долара,  що  з'являються  в  назвах  файлів,
                      також  не  будуть  у  лапках.  Це активне лише тоді, коли bash використовує
                      зворотні похилі риски для обмеження повних назв файлів.  Цю  змінну  типово
                      встановлено, що є типовою поведінкою bash у версіях до 4.2.

              direxpand
                      Якщо  встановлено,  bash,  під  час  доповнення  назв файлів, замінює назви
                      каталогів результатами розширення слів. Це змінює вміст буфера  редагування
                      readline. Якщо ні, bash намагається зберегти те, що ввів користувач.

              dirspell
                      Якщо встановлено, bash намагається виправити помилки в назвах каталогів під
                      час доповнення слів, якщо каталогу зі введеною назвою не існує.

              dotglob Якщо встановлено,  bash  включає  в  результати  розгортання  шляхів  назви
                      файлів,  які  починаються  з  `.'.  Назви  файлів  “.”  і “..” завжди мають
                      відповідати явно, навіть якщо встановлено dotglob.

              execfail
                      Якщо встановлено, неінтерактивна оболонка не закриється, якщо вона не зможе
                      виконати   файл,  зазначений  як  аргумент  для  вбудованої  команди  exec.
                      Інтерактивна оболонка не закриється в разі невдачі exec.

              expand_aliases
                      Якщо встановлено, альтернативи буде розгорнуто так, як це описано  above  у
                      розділі  АЛЬТЕРНАТИВИ.  Типово  цей  параметр  увімкнено  для інтерактивних
                      оболонок.

              extdebug
                      Якщо встановлено на моменти виклику оболонки або у файлі запуску  оболонки,
                      налаштувати  виконання профілю діагностики до запуску оболонки так само, як
                      у параметрі --debugger.  Якщо  встановлено  після  виклику  оболонки,  буде
                      увімкнено таку поведінку для використання засобів діагностики:

                      1.     Параметр -F вбудованої команди declare призводить до виведення назви
                             файла початкового коду та номера рядка для усіх функцій, назви  яких
                             передано як аргумент.

                      2.     Якщо команда яку запущено пасткою DEBUG повертає ненульове значення,
                             наступну команду буде пропущено і не виконано.

                      3.     Якщо команда, яку віддано пасткою  DEBUG,  повертає  значення  2,  і
                             оболонка  виконується  у  підпрограмі  (функції оболонки або скрипті
                             оболонки, які запущено вбудованими командами . і  source),  оболонка
                             імітує виклик return.

                      4.     BASH_ARGC  і  BASH_ARGV  буде  оновлено  так,  як це описано у їхніх
                             описах above).

                      5.     Буде увімкнено трасування функцій: заміна команд,  функції  оболонки
                             та  підоболонки,  які  викликає  за допомогою ( команда ) успадкують
                             пастки DEBUG і RETURN.

                      6.     Буде увімкнено трасування помилок: заміна команд,  функції  оболонки
                             та  підоболонки,  які  викликає  за допомогою ( команда ) успадкують
                             пастку ERR.

              extglob Якщо  встановлено,  будуть  увімкнені   функції   розширеного   зіставлення
                      шаблонів, описані above у розділі Розгортання шляхів.

              extquote
                      Якщо  встановлено,  рядки  беруться  в  лапки  $'рядок'  і $"рядок" у межах
                      розширень ${параметрів}, узятих  у  подвійні  лапки.  Цей  параметр  типово
                      увімкнено.

              failglob
                      Якщо  встановлено,  шаблони,  які  не  відповідають  назвам  файлів під час
                      розгортання шляху, призводять до помилки розгортання.

              force_fignore
                      Якщо встановлено, суфікси, визначені змінною оболонки  FIGNORE,  призводять
                      до нехтування слів під час доповнювання слів, навіть якщо нехтувані слова є
                      єдиними можливими доповненнями. Див. підзаголовок ЗМІННІ ОБОЛОНКИ  above  ,
                      де наведено опис FIGNORE. Цей параметр типово увімкнено.

              globasciiranges
                      Якщо   встановлено,   вирази  діапазону,  які  використовуються  у  виразах
                      відповідності шаблону з дужками (див.  Відповідність за взірцем above)  під
                      час  порівнянь  поводяться  як  у  традиційній  мові C. Тобто послідовність
                      зіставлення поточного мовного стандарту не враховується,  тому  b  не  буде
                      зіставлятися  між  A  і  B,  а символи ASCII верхнього та нижнього регістру
                      будуть порівнюватися разом.

              globskipdots
                      Якщо   встановлено,   розгортання   шляхів   ніколи   не    встановлюватиме
                      відповідність  назвам  файлів “.” і “..”, навіть якщо взірець починається з
                      “.”. Цей параметр типово увімкнено.

              globstar
                      Якщо встановлено, шаблон **, який використовується в контексті  розгортання
                      шляху,  відповідає  всім файлам і нулю або більше каталогів і підкаталогів.
                      Якщо за шаблоном йде /, до уваги беруться лише каталоги та підкаталоги.

              gnu_errfmt
                      Якщо  встановлено,  повідомлення  про  помилки   оболонки   записуються   у
                      стандартному форматі повідомлень про помилки GNU.

              histappend
                      Якщо  встановлено,  то  список  журналу,  коли  оболонка  завершує  роботу,
                      додається до файлу, названого значенням змінної HISTFILE, а не  перезаписує
                      його.

              histreedit
                      Якщо   встановлено,  і  використовується  readline,  користувачу  надається
                      можливість повторно відредагувати невдалe підстановку журналу.

              histverify
                      Якщо встановлено,  і  використовується  readline,  результати  підставлення
                      журналу  не  відразу  передаються  до  обробника  оболонки.  Замість  цього
                      отриманий рядок завантажується в буфер редагування  readline,  що  дозволяє
                      вносити подальші зміни.

              hostcomplete
                      Якщо встановлено, і використовується readline, bash спробує доповнити назву
                      вузла, коли доповнюється слово, що містить @  (див.  Доповнення  у  розділі
                      READLINE above).  Типово увімкнено.

              huponexit
                      Якщо встановлено, то при завершенні роботи інтерактивної оболонки для входу
                      bash надсилатиме всім завданням SIGHUP.

              inherit_errexit
                      Якщо  встановлено,  заміна  команд  успадкує  значення  параметра  errexit,
                      замість   скасування   встановлення   для   нього   значення  у  середовищі
                      підоболонки. Цей параметр буде увімкнено, якщо увімкнено режим posix.

              interactive_comments
                      Якщо встановлено, в інтерактивній оболонці слово, що починається на  #,  та
                      решту  символів у цьому рядку буде знехтувано (див.  КОМЕНТАРІ above).  Цей
                      параметр типово увімкнено.

              lastpipe
                      Якщо  встановлено  і  керування  завданнями  неактивне,  оболонка  запускає
                      останню команду конвеєра, який не виконується у фоновому режимі в поточному
                      середовищі оболонки.

              lithist Якщо встановлено,  а  параметр  cmdhist  увімкнено,  багаторядкові  команди
                      зберігаються  в  журналу  з  вбудованими новими рядками, а не з розділенням
                      крапки з комою, де це можливо.

              localvar_inherit
                      Якщо  встановлено,  локальні  змінні  успадковують  значення  та   атрибути
                      однойменної  змінної,  яка  існує в попередній області дії до того, як буде
                      присвоєно нове значення. Атрибут nameref не успадковується.

              localvar_unset
                      Якщо встановлено, виклик unset для локальних змінних у попередніх  областях
                      видимості  функції  позначає  їх,  тому  наступні  пошуки  знайдуть  їх  не
                      встановленими  до  виходу  з  цієї   функції.   Це   ідентично   скасуванню
                      встановлення локальних змінних у поточній області видимості функції.

              login_shell
                      Оболонка  встановлює цей параметр, якщо вона запущена як оболонка для входу
                      (див.  ВИКЛИК above).  Значення не можна змінювати.

              mailwarn
                      Якщо встановлено, і файл, який  bash  перевіряє  на  наявність  пошти,  був
                      доступним від моменту останньої перевірки, виводиться повідомлення «Пошту в
                      поштовий_файл прочитано».

              no_empty_cmd_completion
                      Якщо встановлено,  і  використовується  readline,  bash  не  намагатиметься
                      шукати можливе доповнення в PATH, якщо спроба доповнення буде здійснюватися
                      в порожньому рядку.

              nocaseglob
                      Якщо  встановлено,  bash  встановлюватиме  відповідність  назв  файлів   із
                      врахуванням  регістру  при  розгортанні  шляхів  (див.  Розгортання  шляхів
                      above).

              nocasematch
                      Якщо встановлено, bash встановлюватиме відповідність взірців без врахування
                      регістру  символів  при  виконанні  команд-умов  case  та [[, при виконанні
                      розгортання слів із  заміною  за  взірцем  або  при  фільтрування  можливих
                      доповнень при програмованому доповненні.

              noexpand_translation
                      Якщо встановлено, bash братиме трансльований результат нейтралізації $"..."
                      у одинарні лапки замість подвійних. Якщо рядок не  буде  трансльовано,  цей
                      параметр ні на що не впливатиме.

              nullglob
                      Якщо   встановлено,   bash   дозволятиме   розгортання   шаблонів,  які  не
                      відповідають жодному файлу (див. Розгортання шляхів  above)  ,  у  порожній
                      рядок, а не у сам взірець.

              patsub_replacement
                      Якщо встановлено, bash не розгортатиме & у рядку-заміннику при підставлянні
                      за взірцем до тексту, який відповідає  взірцю,  як  це  описано  у  розділі
                      Розгортання параметрів above.  Цей параметр типово увімкнено.

              progcomp
                      Якщо встановлено, буде увімкнено можливості програмованого доповнення (див.
                      Програмоване доповнення above) . Типово, цей параметр увімкнено.

              progcomp_alias
                      Якщо встановлено, буде увімкнено програмоване доповнення, bash  оброблятиме
                      назву   команди,  яка  не  має  жодних  варіантів  доповнення,  як  можливу
                      альтернативу і виконуватиме  розгортання  альтернатив.  Якщо  у  команди  є
                      альтернатива, bash спробує виконати програмоване доповнення з використанням
                      слова команди, яке є результатом розгортання альтернативи.

              promptvars
                      Якщо встановлено, рядки запиту підлягатимуть розгортанню параметрів, заміні
                      команд,   арифметичним   обчисленням   та   вилученню  нейтралізації  після
                      розгортання, яке описано у  розділі  ЗАПИТИ  above.   Цей  параметр  типово
                      увімкнено.

              restricted_shell
                      Оболонка  встановлює  цей  параметр,  якщо  її запущено у обмеженому режимі
                      (див.  ОБМЕЖЕНА ОБОЛОНКА below).  Значення параметра  змінювати  не  можна.
                      Значення  параметра  не  буде повторно встановлено під час виконання файлів
                      запуску, що уможливлює  визначення  у  файлах  запуску  того,  чи  запущено
                      оболонку в обмеженому режимі.

              shift_verbose
                      Якщо  встановлено,  вбудована  команда  shift  виводитиме  повідомлення про
                      помилку,  якщо  лічильник  зсуву  перевищуватиме  за  значенням   кількість
                      позиційних параметрів.

              sourcepath
                      Якщо  встановлено,  вбудована команда . (source) використовуватиме значення
                      змінної PATH для пошуку каталогу, який містить файл, переданий як аргумент.
                      Типово, цей параметр увімкнено.

              varredir_close
                      Якщо  встановлено,  оболонка  автоматично  закриватиме  дескриптори файлів,
                      значення   яких   визначено   за   допомогою   синтаксису   переспрямування
                      {назва-змінної}   (див.    ПЕРЕСПРЯМУВАННЯ   above)  замість  полишення  їх
                      відкритими при завершенні роботи команди.

              xpg_echo
                      Якщо встановлено, вбудована команда echo типово розгортатиме  послідовності
                      символів із екрануванням символом зворотної похилої риски.

       suspend [-f]
              Призупинити  виконання  цієї  оболонки,  аж  доки  вона не отримає сигналу SIGCONT.
              Роботу оболонки входу до системи або оболонки без увімкненого керування  завданнями
              не  можна призупиняти; для перевизначення цієї поведінки і примусового призупинення
              роботи можна скористатися параметром -f. Буде повернуто стан 0, якщо оболонка не  є
              оболонкою  входу  до  системи  або  не  увімкнено керування завданнями і не вказано
              параметр -f.

       test вираз
       [ вираз ]
              Повернути стан 0 (істина) або 1 (хибність), залежно від обчисленого значення виразу
              умови  вираз.  Кожен  оператор  і  операнд  має  бути  окремим  аргументом.  Вирази
              складаються з основних елементів, які описано above у розділі УМОВНІ  ВИРАЗИ.  test
              не  приймає ніяких параметрів, а також не приймає і ігнорує аргумент -- як позначку
              завершення параметрів.

              Вирази можна поєднувати за  допомогою  зазначених  нижче  операторів.  Оператори  у
              списку  вказано  за  пріоритетністю.  Обчислення залежить від кількості аргументів.
              Див. нижче. Якщо аргументів  п'ять  або  більше,  буде  використано  пріоритетність
              операторів.
              ! вираз
                     Істина, якщо вираз є хибним.
              ( вираз )
                     Повертає  значення  виразу  вираз. Цим можна скористатися для перевизначення
                     звичайної пріоритетності операторів.
              вираз -a вираз2
                     Істина, якщо обидва, вираз1 і вираз2, мають значення true.
              вираз1 -o вираз2
                     Істина, якщо вираз1 або вираз2 має значення true.

              test і [ обчислюють умовні виразу з використанням набору правил на основі кількості
              аргументів.

              0 аргументів
                     Вираз є хибним.
              1 аргумент
                     Вираз є істинним тоді і лише тоді, коли аргумент не є порожнім.
              2 аргументи
                     Якщо  першим  аргументом є !, вираз є істинним тоді і лише тоді, коли другий
                     аргумент є порожнім.  Якщо  перший  аргумент  є  одним  із  унарних  умовних
                     операторів  зі списку у розділі УМОВНІ ВИРАЗИ above , вираз є істинним, якщо
                     обчислення унарного оператора дає значення «істина». Якщо першим  аргументом
                     не є коректний унарний умовний оператор, вираз буде хибним.
              3 аргументи
                     Вказані  нижче  умови  буде  застосовано  за порядком, який визначає для них
                     список. Якщо другим аргументом  буде  один  із  двійкових  операторів  умов,
                     список  яких наведено у розділі УМОВНІ ВИРАЗИ above , результатом обчислення
                     виразу буде результат двійкової перевірки, операндами якої будуть  перший  і
                     третій  аргументи. Оператори -a і -o вважаються двійковими операторами, якщо
                     у них три аргументи. Якщо першим аргументом є !, значенням буде  заперечення
                     двоаргументної перевірки, у якій використано другий і третій аргументи. Якщо
                     першим  аргументом  є  (,  а  третім  —  ),   результатом   буде   результат
                     одноаргументної   перевірки   другого   аргументу.  В  усіх  інших  випадках
                     результатом обчислення виразу буде «хибність».
              4 аргументи
                     До порядку, у якому  буде  побудовано  список,  застосовують  вказані  нижче
                     умовні  оператори.  Якщо  першим аргументом є !, результат буде запереченням
                     виразу,  що  складається  з  решти  трьох  аргументів.  Для   двоаргументної
                     перевірки буде використано другий і третій аргументи. Якщо першим аргументом
                     є (, а четвертим — ), результатом буде двоаргументна перевірка за  другим  і
                     третім  аргументами.  В  інших  випадках  буде виконано обробку і обчислення
                     виразу відповідно до пріоритетності, яку використано у правилах з наведеного
                     вище списку.
              5 або більше аргументів
                     Вираз   буде   оброблено   і   обчислено   відповідно  до  пріоритетності  з
                     використанням наведених вище правил.

              Якщо використано test або [, оператори < і > лексикографічно упорядковуватимуться з
              використанням порядку ASCII.

       times  Вивести  сукупний  час  використання процесора завданнями користувача і системи для
              оболонки і процесів, які було запущено оболонкою. Станом повернення є 0.

       trap [-lp] [[аргумент] специфікація_сигналу ...]
              Встановити, що при  отриманні  оболонкою  сигналів  специфікація_сигналу  має  бути
              прочитано  і  виконано  команду аргумент. Якщо аргумент не вказано (і вказано єдину
              специфікацію_сигналу) або -, для усіх вказаних сигналів буде  відновлено  початкову
              обробку  (значення,  які  вони  мали  перед  входом  до  оболонки).  Якщо значенням
              аргументу  є  порожній  рядок,  сигнал,  який  вказано  специфікацією_сигналу  буде
              проігноровано оболонкою та командами, які вона викликає. Якщо аргумент не вказано і
              вказано -p, буде виведено команди пастки,  які  пов'язано  із  кожним  сигналом  із
              специфікації_сигналу.  Якщо  не вказано аргументів або вказано лише -p, trap виведе
              список команд, які пов'язано  з  кожним  із  сигналів.  Використання  параметра  -l
              призведе  до того, що оболонка виведе список назв сигналів та відповідних їм чисел.
              Кожен запис специфікації_сигналу є або назвою сигналу, яку визначено у  <signal.h>,
              або номером сигналу. У назвах сигналів слід зберігати регістр символів. Префікс SIG
              є необов'язковим.

              Якщо специфікацією_сигналу є EXIT (0), при виході з оболонки буде виконано  команду
              аргумент.  Якщо  значенням  специфікації_сигналу  є  DEBUG,  команду  аргумент буде
              виконано перед кожною простою  командою,  командою  for,  командою  case,  командою
              select,  будь-якою  арифметичною  командою  for  і  перед першою командою, яку буде
              виконано у функції оболонки (див.  ГРАМАТИКА ОБОЛОНКИ above).  Зверніться до  опису
              параметра extdebug вбудованої команди shopt, щоб дізнатися більше про його вплив на
              пастку DEBUG. Якщо значенням специфікація_сигналу є RETURN, команду  аргумент  буде
              виконано  кожного  разу, коли завершуватиме виконання функції оболонки або скрипту,
              який виконується із використанням вбудованих команд . і source.

              Якщо специфікацією_сигналу є ERR, команду аргумент буде виконано кожного разу, коли
              конвеєр  (який  може  складатися  з  однієї  простої  команди), список або складена
              команда повертає ненульовий стан виходу, відповідно до наведених нижче умов. Пастку
              ERR  не  буде виконано, якщо команда з помилкою є частиною списку команд, одразу за
              яким вказано ключове слово while або until,  частину  перевірки  в  інструкції  if,
              частину  команди,  яка виконується у списку && або ||, окрім команди за останнім &&
              або ||, будь-якою командою у конвеєрі, окрім останньої, або якщо повернене командою
              значення  заперечено  за  допомогою  !.  Це  ті  самі умови, які використовують для
              параметра errexit (-e).

              Сигнали,  знехтувані  при  вході  в  оболонку,  не  можна  захопити  або   скинути.
              Перехоплені  сигнали,  які  не  нехтуються,  скидаються  до  початкових  значень  у
              підоболонці або середовищі підоболонки,  коли  вона  створюється.  Стан  повернення
              false, якщо будь-який  sigspec недійсний; інакше trap повертає true.

       type [-aftpP] назва [назва ...]
              Без  параметрів  вказує, як буде інтерпретовано кожну назву, якщо її використати як
              назву команди. Якщо використовується параметр -t, type друкує один із рядків alias,
              keyword, function, builtin або file, якщо name є псевдонімом, зарезервованим словом
              оболонки, функцією, вбудованою програмою або файлом на диску відповідно. Якщо назву
              не  знайдено,  то  нічого  не  друкується,  і  повертається стан виходу false. Якщо
              використовується параметр -p,  type  повертає  назву  дискового  файлу,  який  буде
              виконано, якщо назву вказано як назву команди, або нічого, якщо ``type -t name'' не
              повертає файл. Параметр -P змушує шукати PATH для кожної назви, навіть якщо  ``type
              -t  name''  не  повертає  файл.  Якщо  команда гешується, -p і -P друкують гешоване
              значення, яке не обов’язково  є  файлом,  який  з’являється  першим  у  PATH.  Якщо
              використовується параметр -a, type друкує всі місця, які містять виконуваний файл з
              назвою назва. Сюди входять псевдоніми та функції, якщо і тільки  якщо  параметр  -p
              також  не  використовується.  Під  час  використання  -aтаблиця гешованих команд не
              переглядається. Параметр -f пригнічує пошук функції оболонки,  як  і  у  вбудованій
              команді  command.  type  повертає  true,  якщо  всі аргументи знайдено, false, якщо
              жодного не знайдено.

       ulimit [-HS] -a
       ulimit [-HS] [-bcdefiklmnpqrstuvxPRT [обмеження]]
              Забезпечує керування ресурсами, доступними для  оболонки,  і  процесами,  які  вона
              запустила, в системах, які дозволяють таке керування. Параметри -H і -S визначають,
              що для даного ресурсу  встановлено  жорстку  або  м’яку  межу.  Після  встановлення
              жорсткої  межі,  її  не  може збільшити користувач без права root; м'яку межу можна
              збільшити до значення жорсткої межі. Якщо не вказано ні -H, ні  -S,  встановлюються
              як  м’яка, так і жорстка межі. Значенням межа може бути число в одиницях, зазначене
              для ресурсу, або  одне  зі  спеціальних  значень  hard,  soft  або  unlimited,  які
              означають  поточну  жорстку  межу,  поточну м’яку межу та безліміт відповідно. Якщо
              значення межа опущено, виводиться поточне значення м’якої межі для ресурсу, якщо не
              вказано  параметр  -H.  Якщо  вказано  більше одного ресурсу, перед значенням, якщо
              доречно, друкуються назва межі й одиниця вимірювання. Інші варіанти інтерпретуються
              так:
              -a     Буде   виведено   звіт   щодо   усіх   поточних   обмежень;   обмеження   не
                     встановлюватимуться
              -b     Максимальний розмір буфера сокета
              -c     Максимальний розмір створених файлів ядра
              -d     Максимальний розмір сегмента даних процесу
              -e     Максимальна пріоритетність планування («nice»)
              -f     Максимальний розмір файлів, які записано оболонкою та її дочірніми процесами
              -i     Максимальна кількість сигналів у черзі
              -k     Максимальна кількість k-черг, які можна розмістити у пам'яті
              -l     Максимальний розмір, який може бути заблоковано у пам'яті
              -m     Максимальний розмір резидентного набору (у багатьох системах це обмеження не
                     береться до уваги)
              -n     Максимальна  кількість  відкритих  дескрипторів  файлів (більшість систем не
                     дозволяють встановлення цього значення)
              -p     Розмір каналу у 512-байтових блоках (може бути не встановлено)
              -q     Максимальна кількість байтів у чергах повідомлень POSIX
              -r     Максимальна пріоритетність планування у режимі реального часу
              -s     Максимальний розмір стека
              -t     Максимальний обсяг часу процесора у секундах
              -u     Максимальна кількість процесів, які доступні для одного користувача
              -v     Максимальний об'єм віртуальної пам'яті, яка  доступна  для  оболонки,  і,  у
                     деяких системах, для її дочірніх процесів
              -x     Максимальна кількість блокувань файлів
              -P     Максимальна кількість псевдотерміналів
              -R     Максимальний час, протягом якого процес реального часу може виконуватися без
                     блокування, у мікросекундах
              -T     Максимальна кількість потоків обробки

              Якщо вказано  обмеження  і  не  використано  параметр  -a,  обмеження  стане  новим
              значенням  вказаного  ресурсу.  Якщо не вказано жодного параметра, буде використано
              параметр -f. Кроком зростання значень є 1024 байтів, окрім варіанта з -t, для якого
              кроком  є  секунди;  -R, для якого кроком є мікросекунди; -p, для якого одиницями є
              блоки у 512 байтів; -P, -T, -b, -k, -n і -u, для яких значення є безрозмірними;  та
              у режиму posix -c і -f, для яких кроком зростання є 512 байтів. Повернутим станом є
              0, якщо немає некоректних параметрів або аргументів і встановлення нового обмеження
              виконано без помилок.

       umask [-p] [-S] [режим]
              Встановити  для  маски  створення  файлів  користувачем  значення режим. Якщо режим
              починається з цифри, він вважатиметься записом у  вісімковій  системі  числення;  в
              усіх  інших  випадках, він вважатиметься записом символічної маски режиму, подібним
              до того, який приймає команда  chmod(1).  Якщо  режим  не  вказано,  буде  виведено
              поточне  значення  маски.  Використання  параметра -S призведе до виведення маски у
              символічній формі. Типовим режимом виведення є режим вісімкових чисел. Якщо вказано
              параметр  -p  і  не  вказано  режим,  дані  буде  виведено  у  форматі,  яким можна
              скористатися як вхідними даними. Станом повернення буде 0, якщо режим було  змінено
              успішно  або  якщо  не  було  вказано аргументу режим. В усіх інших випадках станом
              повернення буде «хибність».

       unalias [-a] [назва ...]
              Вилучити усі назви назва зі списку визначених альтернатив. Якщо  вказано  -a,  буде
              вилучено  усі  визначення  альтернатив.  Повернутим  значенням  буде «істина», якщо
              вказана назва є визначеною альтернативою.

       unset [-fv] [-n] [назва ...]
              Для кожної назви вилучити відповідну змінну або функцію. Якщо вказано параметр  -v,
              кожна  назва  є  посиланням на змінну оболонки, і цю змінну буде вилучено. Значення
              призначених лише для читання змінних у такий спосіб скидати не можна. Якщо  вказано
              параметр  -f,  усі  назви  є посиланнями на функцію оболонки, ці визначення функцій
              буде вилучено. Якщо вказано параметр -n і назва є  змінною  із  атрибутом  nameref,
              буде  скасовано встановлення значення назви, а не змінної, на яку вона посилається.
              -n не спрацює, якщо вказано параметр -f. Якщо не  вказано  жодних  параметрів,  усі
              назви  посилаються  на змінні. Якщо не буде виявлено змінної із відповідною назвою,
              наступним командам буде скасовано встановлення значення для функції із  відповідною
              назвою,  якщо  така  існує.  Усі  змінні  і  функції  встановлення значень для яких
              скасовано, буде вилучено з середовища, яке буде передано наступним  командам.  Якщо
              скасовано  встановлення  значення  для змінних BASH_ALIASES, BASH_ARGV0, BASH_CMDS,
              BASH_COMMAND, BASH_SUBSHELL,  BASHPID,  COMP_WORDBREAKS,  DIRSTACK,  EPOCHREALTIME,
              EPOCHSECONDS,  FUNCNAME, GROUPS, HISTCMD, LINENO, RANDOM, SECONDS або SRANDOM, вони
              втратять  свої  особливі  властивості,  навіть  якщо  згодом  значення  буде  знову
              встановлено. Станом виходу буде «істина», якщо не буде виявлено призначені лише для
              читання або непридатні до скасування встановлення значення назв.

       wait [-fn] [-p назва_змінної] [ідентифікатор ...]
              Зачекати на завершення усіх вказаних  дочірніх  процесів  і  повернути  їхній  стан
              завершення  роботи.  Кожен  ідентифікатор  має  бути  ідентифікатором  процесу  або
              специфікацією завдання. Якщо задано специфікацію  завдання,  оболонка  чекатиме  за
              завершення  усіх  процесів у конвеєрі завдання. Якщо ідентифікатор не вказано, wait
              чекатиме  на  завершення  усіх  завдань  у  фоновому  режимі  і  заміни  останнього
              виконаного  процесу,  якщо його ідентифікатор процесу збігається із ідентифікатором
              процесу $!, і стан  повернення  рівний  нулеві.  Якщо  вказано  параметр  -n,  wait
              чекатиме  на  завершення  одинарного  завдання  зі  списку  ідентифікаторів. Якщо ж
              ідентифікаторів не вказано, чекатиме на завершення будь-якого  завдання  і  поверне
              його стан виходу. Якщо жоден із вказаних аргументів не є ідентифікатором дочірнього
              процесу оболонки або не вказано жодних  аргументів,  і  оболонка  не  має  дочірніх
              процесів,  на  завершення  яких  можна  було б чекати, станом виходу буде 127. Якщо
              вказано параметр -p, ідентифікатор процесу або завдання, для якого  буде  повернуто
              стан   виходу,  стане  значенням  змінної  назва_змінної,  яку  вказано  аргументом
              параметра. На початку, значення цієї змінної не буде встановлено. Це корисно,  лише
              якщо  вказано  параметр  -n.  Якщо  вказати  параметр  -f  із увімкненим керуванням
              завданнями, wait чекатиме на завершення завдання ідентифікатор, перш ніж  повертати
              стан  його  виходу,  замість  простого  повернення  значення  при зміні стану. Якщо
              ідентифікатор задає процес або завдання, яких не існує, станом повернення буде 127.
              Якщо  wait  буде перервано сигналом, станом повернення буде число, яке є більшим за
              128, як це описано у розділі СИГНАЛИ above.  В інших  випадках  повернутий  стан  є
              станом виходу останнього процесу або завдання, на завершення якого очікує програма.

РЕЖИМ СУМІСНОСТІ ОБОЛОНКИ

       У  bash-4.0 було впроваджено поняття рівень сумісності оболонки, яке визначається як набір
       параметрів вбудованої команди  shopt:  compat31,  compat32,  compat40,  compat41  тощо.  У
       поточній  версії  передбачено  визначення  лише  одного  рівня сумісності — усі варіанти є
       взаємно виключними. Рівень сумісності призначено для того, щоб уможливити для користувачів
       вибір поведінки попередніх версій, які є несумісними із новими версіями на час перенесення
       скриптів на використання поточних можливостей і поточної поведінки оболонки. Таке  рішення
       ми вважаємо тимчасовим.

       У  цій  версії  немає  описів  поведінки,  яка є стандартною для певної версії (наприклад,
       встановлення compat32 означає, що нейтралізація правого боку  оператора  відповідності  за
       формальним  виразом  призводить до нейтралізації спеціальних символів формального виразу у
       слові, тобто типової поведінки для bash-3.2 та новіших версій).

       Якщо користувач увімкне, скажімо, compat32, це може вплинути  на  поведінку  інших  рівнів
       сумісності,  аж  до,  включно,  поточного  рівня сумісності. Ідея полягає у тому, що кожен
       рівень сумісності керує поведінкою, яку було змінено у відповідній версії bash,  але  вона
       могла бути характерною для попередніх версій. Наприклад, зміну щодо використання порівнянь
       із врахуванням локалі у команді [[ було впроваджено у bash-4.1,  а  у  попередніх  версіях
       було  використано  порівняння  на  основі  ASCII, тому вмикання compat32 призведе також до
       вмикання порівнянь на основі ASCII.  Так  модульність  може  бути  недостатньою  для  усіх
       випадків  використання,  тому  користувачам  слід  бути доволі обережними із застосуванням
       рівнів сумісності. Ознайомтеся із документацією, що визначити поточну  поведінку  оболонки
       для потрібної вам можливості.

       У bash-4.3 впроваджено нову змінну оболонки: BASH_COMPAT. Значення, яке надано цій змінній
       (десятковий дріб номера версії, зокрема 4.2, або  ціле  число,  яке  відповідає  параметру
       compatNN, зокрема 42), визначає рівень сумісності.

       Починаючи  з bash-4.4, у bash розпочато вилучення параметрів застарілих рівнів сумісності.
       Нарешті, параметри буде вилучено і заміщено BASH_COMPAT.

       Bash-5.0 є останньою версією, для якої передбачено окремий параметр shopt для  попередньої
       версії. Користувачам слід користуватися BASH_COMPAT у bash-5.0 і новіших версіях.

       У  наведеній  нижче  таблиці  описується  зміна поведінки, керована кожним значенням рівня
       сумісності. Тег compat NN використовується як скорочення для встановлення рівня сумісності
       до  NN,  використовуючи  один  з  наведених  механізмів.  Для  версій  до  bash-5.0 рівень
       сумісності можна встановити  за  допомогою  відповідного  параметра  shopt  compatNN.  Для
       bash-4.3 та пізніших версій краще використовувати змінну BASH_COMPAT, і це потрібно робити
       для bash-5.1 та пізніших версій.

       compat31
              •      взяття у лапки правої частини рівності оператора встановлення  відповідності
                     за формальним виразом у команді [[ (=~) не має особливого ефекту

       compat32
              •      переривання  списку  команд,  подібного  до «a ; b ; c», спричиняє виконання
                     наступної команди у списку (у bash-4.0 та пізніших версіях оболонка поводить
                     себе  так,  наче  отримано  переривання,  отже, переривання однієї команди у
                     списку перериває виконання усього списку)

       compat40
              •      оператори < і > команди [[  не  враховують  поточну  локаль  при  порівнянні
                     рядків;  буде  використано  упорядковування  за  ASCII.  У  версіях  Bash до
                     bash-4.1 використано упорядковування за ASCII  і  strcmp(3);  у  bash-4.1  і
                     пізніших  версіях  використано послідовність упорядковування поточної локалі
                     та strcoll(3).

       compat41
              •      у режимі posix після time можуть бути параметри, але команду все  одно  буде
                     розпізнано як зарезервоване слово (це інтерпретація POSIX 267)
              •      у  режимі posix обробник потребує, щоб у частині слово розгортання параметра
                     у подвійних лапках була парна  кількість  одинарних  лапок,  і  обробляє  їх
                     по-особливому:  символи  в  одинарних лапках вважаються нейтралізованими (це
                     інтерпретація POSIX 221)

       compat42
              •      рядок-замінник  при  заміні  із  взірцем  у  подвійних  лапках  не  підлягає
                     вилученню лапок, як у версіях після bash-4.2
              •      у  режимі posix одинарні лапки вважаються особливим символом при розгортанні
                     частини слово у  розгортанні  параметрів  у  подвійних  лапках:  ними  можна
                     скористатися  для  екранування правої фігурної дужки або іншого спеціального
                     символу (це частина інтерпретації POSIX 221); у  пізніших  версіях  одинарні
                     лапки не вважаються особливим символом у розгортання у подвійних лапках

       compat43
              •      оболонка  не  виводить  повідомлення  із  попередженням,  якщо буде виконано
                     спробу скористатися встановленням складеного значення у лапках як аргументом
                     declare  (declare  -a  foo='(1  2)').  У  пізніших версіях попередження щодо
                     використання таких синтаксичних конструкцій вважається застарілим
              •      помилки розгортання слів вважаються нефатальними помилками,  які  призводять
                     до  збою поточної команди, навіть у режимі posix (типова поведінка полягає в
                     тому,  щоб  зробити  їх  фатальними  помилками,  які  призводять  до  виходу
                     оболонки)
              •      під   час  виконання  функції  оболонки  стан  циклу  (while/until/тощо)  не
                     скидається,  тому  break  або  continue  в  цій  функції   переривають   або
                     продовжують  цикли  в  контексті  виклику.  Bash-4.4  і новіші скидають стан
                     циклу, щоб запобігти цьому

       compat44
              •      оболонка встановлює значення, використовувані  BASH_ARGV  і  BASH_ARGC,  щоб
                     вони  могли  розширюватися  до  позиційних  параметрів оболонки, навіть якщо
                     режим розширеного налагодження не ввімкнено
              •      підоболонка успадковує цикли від батьківського  контексту,  тому  break  або
                     continue  призведе  до виходу з підоболонки. Bash-5.0 і новіші скидають стан
                     циклу, щоб запобігти виходу
              •      присвоєння змінним, що передують вбудованим  командам,  таким  як  export  і
                     readonly, які встановлюють атрибути, продовжують впливати на змінні з такими
                     ж назвами в середовищі, що викликає, навіть якщо  оболонка  не  перебуває  в
                     режимі posix

       compat50
              •      У   bash-5.1   змінено  спосіб  генерування  $RANDOM,  щоб  трохи  підвищити
                     випадковість. Якщо рівень сумісності оболонки встановлено на 50  або  нижче,
                     вона   повертається   до  методу  з  bash-5.0  та  попередніх  версій,  тому
                     ініціалізація  генератора  випадкових  чисел  присвоєнням  значення   RANDOM
                     призведе до тієї ж послідовності, що й у bash-5,0
              •      Якщо   геш-таблиця   команд   порожня,  версії  bash  до  bash-5.1  виводили
                     повідомлення про це, навіть коли створювали вихідні дані, які можна повторно
                     використати  як вхідні дані. Bash-5.1 пригнічує це повідомлення, коли надано
                     параметр -l.

       compat51
              •      Вбудована команда unset обробляє спроби  скасувати  підписи  масиву  @  і  *
                     по-різному,  залежно  від  того,  є  масив  індексованим чи асоціативним, та
                     інакше від попередніх версій.

ОБМЕЖЕНА ОБОЛОНКА

       Якщо bash запущено з назвою rbash, або під час виклику додано параметр -r,  оболонка  стає
       обмеженою.   Обмежена   оболонка   використовується  для  налаштування  середовища,  більш
       керованого, ніж стандартна оболонка. Вона поводиться як bash,  за  винятком  того,  що  не
       виконуються або заборонені такі дії:

       •      зміна каталогів за допомогою cd

       •      встановлення значення або скасовування встановлення значення SHELL, PATH, HISTFILE,
              ENV та BASH_ENV

       •      задання назв команд, які містять /

       •      задання назви файла, яка містить /, як аргументу вбудованої команди .

       •      задання назви файла, що містить  символ  похилої  риски,  як  аргументу  вбудованої
              команди history

       •      задання  назви  файла,  що  містить символ похилої риски, як аргументу параметра -p
              вбудованої команди hash

       •      імпортування визначень функцій із середовища оболонки під час запуску

       •      обробка значення SHELLOPTS із середовища оболонки під час запуску

       •      переспрямування виводу з використанням операторів переспрямування >,  >|,  <>,  >&,
              &>, і >>

       •      використання вбудованої команди exec для заміни оболонки іншою командою

       •      додавання  або  вилучення  вбудованих  команд  за  допомогою  параметрів  -f  і  -d
              вбудованої команди enable

       •      використання вбудованої команди enable для вмикання  вимкненої  вбудованої  команди
              оболонки

       •      додавання параметра -p до вбудованої команди command

       •      вимикання обмеженого режиму за допомогою set +r або shopt -u restricted_shell.

       Ці обмеження буде примусово застосовано після читання усіх файлів запуску.

       When  a  command  that  is  found  to be a shell script is executed (see COMMAND EXECUTION
       above), rbash вимикає усі обмеження щодо виконання скрипту у запущеній оболонці.

ДИВ. ТАКОЖ

       Bash Reference Manual, Brian Fox і Chet Ramey
       The Gnu Readline Library, Brian Fox і Chet Ramey
       The Gnu History Library, Brian Fox і Chet Ramey
       Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE --
              http://pubs.opengroup.org/onlinepubs/9699919799/
       http://tiswww.case.edu/~chet/bash/POSIX — опис режиму posix
       sh(1), ksh(1), csh(1)
       emacs(1), vi(1)
       readline(3)

ФАЙЛИ

       /bin/bash
              Виконуваний файл bash
       /etc/profile
              Загальносистемний файл ініціалізації, який буду  виконано  для  оболонок  входу  до
              системи
       /etc/bash.bashrc
              Загальносистемний файл запуску для окремої інтерактивної оболонки
       /etc/bash.bash.logout
              Загальносистемний  файл  чищення  оболонки входу до системи, який буде виконано під
              час завершення роботи оболонки входу до системи
       ~/.bash_profile
              Особистий файл ініціалізації, який буду виконано для оболонок входу до системи
       ~/.bashrc
              Індивідуальний файл запуску для окремої інтерактивної оболонки
       ~/.bash_logout
              Індивідуальний файл чищення оболонки входу до системи, який буде виконано  під  час
              завершення роботи оболонки входу до системи
       ~/.bash_history
              Типове значення HISTFILE, файл, у якому bash зберігає журнал команд
       ~/.inputrc
              Індивідуальний файл ініціалізації readline

АВТОРИ

       Brian Fox, Free Software Foundation
       bfox@gnu.org

       Chet Ramey, Західний резервний університет Кейса
       chet.ramey@case.edu

ЗВІТУВАННЯ ПРО ВАДИ

       Якщо  вами  буде  виявлено  ваду  у bash, вам слід повідомити про неї. Втім, спочатку слід
       переконатися, що це справді вада, і що її можна відтворити у найсвіжішій версії bash.  Код
       найсвіжішої    версії   завжди   можна   знайти   на   ftp://ftp.gnu.org/pub/gnu/bash/   і
       http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz.

       Щойно вами буде встановлено достеменне існування вади, скористайтеся командою bashbug  для
       надсилання  звіту  щодо  вади.  Якщо  ви  знаєте,  як виправити ваду, будемо раді, якщо ви
       повідомите нам про це! Пропозиції та «філософські» звіти про вади  варто  спрямовувати  на
       адресу bug-bash@gnu.org або розміщувати у групі новин Usenet gnu.bash.bug.

       До УСІХ звітів щодо вад має бути включено:

       Номер версії bash
       Дані щодо обладнання та операційної системи
       Дані щодо компілятора, використаного для збирання програми
       Опис поведінки програми під час відтворення вади
       Короткий скрипт або «рецепт», виконання якого призводить до проявів вади

       bashbug  автоматично  вставляє  перші  три записи до шаблону, який він надає для створення
       звіту щодо вади.

       Коментарі та звіти щодо  вад  у  цій  сторінці  підручника  слід  спрямовувати  на  адресу
       chet.ramey@case.edu.

ВАДИ

       Він надто великий та надто повільний.

       Між  bash  та  традиційними  версіями  sh  є  деякі  незначні  відмінності, які пов'язано,
       здебільшого, зі специфікацією POSIX.

       У деяких випадках використання є проблеми із альтернативами.

       Вбудовані команди та функції оболонки не підлягають зупиненню або повторному запуску.

       Під час спроби призупинення процесу складені команди та командні послідовності вигляду  `a
       ;  b  ;  c'  не  обробляються витончено. Коли процес зупиняється, оболонка негайно виконує
       наступну команду в  послідовності.  Досить  укласти  послідовність  команд  у  дужки,  щоб
       примусово помістити її в підоболонку, яку можна зупинити як одиницю.

       Змінні-масиви не можна (ще) експортувати.

       Одночасно можна користуватися лише одним активним копроцесом.

ПЕРЕКЛАД

       Український  переклад  цієї сторінки посібника виконано Andrij Mizyk <andmizyk@gmail.com>,
       Andriy  Rysin  <arysin@gmail.com>,  Yuri   Chornoivan   <yurchor@ukr.net>   і   lxlalexlxl
       <lxlalexlxl@ukr.net>

       Цей  переклад  є безкоштовною документацією; будь ласка, ознайомтеся з умовами GNU General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩.  НЕ НАДАЄТЬСЯ ЖОДНИХ
       ГАРАНТІЙ.

       Якщо  ви  знайшли  помилки  у  перекладі  цієї  сторінки підручника, будь ласка, надішліть
       електронний лист до списку листування перекладачів: ⟨trans-uk@lists.fedoraproject.org⟩.