.\" -*- coding: UTF-8 -*- .\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey .\" Case Western Reserve University .\" chet.ramey@case.edu .\" .\" Last Change: Mon Apr 7 16:59:13 EDT 2025 .\" .\" For bash_builtins, strip all but "SHELL BUILTIN COMMANDS" section .\" For rbash, strip all but "RESTRICTED SHELL" section .\" .\" Both conditionalize text based on the base page being formatted .\" using the zZ and zY registers, respectively .\" .\" Ensure the registers are initialized to avoid groff warnings. .nr zZ +0 .nr zY +0 .\" empty .ds zZ .\" Ensure the macros/strings are initialized to avoid groff warnings. .\" empty .ds zY .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH BASH 1 "7 квітня 2025 року" "GNU Bash 5.3" .ie \n(.g \{\ .ds ' \(aq .ds " \(dq .ds ^ \(ha .ds ~ \(ti .\} .el \{\ .ds ' ' .\" \*" is not usable in macro arguments on AT&T troff (DWB, Solaris 10) .ds " ""\" two adjacent quotes and no space before this comment .ds ^ ^ .ds ~ ~ .\} .\" . .de FN \%\fI\|\\$1\|\fP\\$2 .. .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. .\" \% at the beginning of the string protects the filename from hyphenation. .\" .de Q .ie \n(.g \(lq\\$1\(rq\\$2 .el \{\ . if t ``\\$1''\\$2 . if n "\\$1"\\$2 .\} .. .\" .\" Quotation macro: generate consistent quoted strings that don't rely .\" on the presence of the `CW' constant-width font. .\" .de QN .ie \n(.g \%\(lq\\$1\(rq\\$2 .el \{\ . if t \%``\\$1''\\$2 . if n \%"\\$1"\\$2 .\} .. .\" Q but disallowing hyphenation of the string .SH НАЗВА bash — GNU Bourne\-Again SHell .SH "КОРОТКИЙ ОПИС" \fBbash\fP [параметри] [рядок_команди | файл] .SH "АВТОРСЬКІ ПРАВА" .if n Bash is Copyright (C) 1989-2025 by the Free Software Foundation, Inc. .if t Bash is Copyright \(co 1989-2025 by the Free Software Foundation, Inc. .SH ОПИС \fBBash\fP є інтерпретатором мови командного рядка, який виконує команди, прочитані зі стандартного джерела вхідних даних, з рядка або з файла. Це реалізація і розширення оболонки Борна, давнього інтерпретатора мови команд Unix. У \fBBash\fP також реалізовано корисні можливості оболонок \fIKorn\fP і \fIC\fP (\fBksh\fP і \fBcsh\fP). .PP .SM POSIX – це назва сімейства комп'ютерних стандартів, заснованих на Unix. \fBBash\fP створено як сумісну реалізацію частини Shell and Utilities специфікації IEEE .SM POSIX (стандарт IEEE 1003.1). Режим .SM POSIX \fBBash\fP (далі – режим \fIposix\fP) змінює поведінку оболонки там, де її типова робота відрізняється від стандартної, щоб суворо відповідати стандарту. Див. .SM \fBДИВ. ТАКОЖ\fP нижче, щоб ознайомитися із довідковим документом, який детально описує, як режим posix впливає на поведінку \fBbash\fP. \fBBash\fP можна налаштувати на типову сумісність із .SM POSIX . .SH ПАРАМЕТРИ Усіма односимвольними параметрами оболонки, які документовано в описі вбудованої команди \fBset\fP, зокрема \fB\-o\fP, можна скористатися як параметрами під час виклику оболонки. Крім того, під час виклику \fBbash\fP виконує обробку таких параметрів: .PP .TP 10 \fB\-c\fP Якщо вказано параметр \fB\-c\fP, команди буде прочитано з першого аргументу, який не є параметром, \fIрядок_команди\fP. Якщо після аргументу \fIрядок_команди\fP вказано інші аргументи, перший аргумент буде пов'язано із \fB$0\fP, а усі інші аргументи — з наступними позиційними параметрами. Прив'язка до \fB$0\fP встановлює назву оболонки, яку буде використано у повідомленнях із попередженнями та повідомленнях про помилки. .TP \fB\-i\fP Якщо вказано параметр \fB\-i\fP, оболонка є \fIінтерактивною\fP. .TP \fB\-l\fP Наказує \fBbash\fP працювати так, наче програму викликано як оболонку для входу до системи (див. .SM \fBВИКЛИК\fP нижче). .TP \fB\-r\fP Якщо вказано параметр \fB\-r\fP, оболонка стає \fIобмеженою\fP (див. .SM \fBОБМЕЖЕНА ОБОЛОНКА\fP нижче). .TP \fB\-s\fP Якщо вказано параметр \fB\-s\fP або якщо після обробки параметрів не буде виявлено аргументів, команди буде прочитано зі стандартного джерела вхідних даних. За допомогою цього параметра можна встановлювати позиційні параметри при виклику інтерактивної оболонки або при читанні вхідних даних за допомогою конвеєра команд. .TP \fB\-D\fP Список усіх рядків у подвійних лапках, яким передуватиме \fB$\fP, буде виведено до стандартного виведення. Це рядки, які підлягатимуть перекладу, якщо поточною локаллю не є \fBC\fP або \fBPOSIX\fP. Неявним чином буде також застосовано параметр \fB\-n\fP. Команди оболонки не виконуватимуться. .TP \fB[\-+]O [\fP\fIпараметр_оболонки\fP\fB]\fP \fIпараметр_оболонки\fP є одним з параметрів оболонки, який приймає вбудований засіб \fBshopt\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). Якщо вказано \fIпараметр_оболонки\fP, \fB\-O\fP встановлює значення цього параметра; \fB+O\fP скасовує встановлення. Якщо \fIпараметр_оболонки\fP не вказано, до стандартного виведення буде виведено назви і значення параметрів оболонки, які приймаються \fBshopt\fP. Якщо параметром виклику є \fB+O\fP, виведення буде показано у форматі, який може бути повторно використано як вхідні дані програми. .TP \fB\-\-\fP \fB\-\-\fP вказує на завершення параметрів і вимикає подальшу обробку параметрів. Будь\-які аргументи після \fB\-\-\fP оброблятимуться як назви файлів скриптів оболонки (див. нижче) та аргументи, які буде передано цьому скрипту. Аргумент \fB\-\fP є еквівалентним до \fB\-\-\fP. .PP Крім того, \fBbash\fP обробляє декілька багатосимвольних параметрів. Ці параметри має бути вказано у командному рядку до односимвольних параметрів, щоб їх було розпізнано. .PP .TP \fB\-\-debugger\fP Налаштовування для профілю засобу діагностики, який слід виконати до запуску оболонки. Вмикає розширений режим діагностики (див. опис параметра \fBextdebug\fP вбудованого засобу \fBshopt\fP нижче). .TP \fB\-\-dump\-po\-strings\fP Еквівалент \fB\-D\fP, але виведення відбуватиметься у форматі файлів GNU \fIgettext\fP .Q po формат файлів (портативного об'єкта). .TP \fB\-\-dump\-strings\fP Те саме, що і \fB\-D\fP. .TP \fB\-\-help\fP Вивести повідомлення щодо користування до стандартного виведення і завершити роботу програми зі станом «успіх». .TP .PD 0 \fB\-\-init\-file\fP \fIфайл\fP .TP \fB\-\-rcfile\fP \fIфайл\fP .PD Execute commands from \fIfile\fP instead of the standard personal initialization file .FN \*~/.bashrc if the shell is interactive (see .SM \fBINVOCATION\fP below). .TP \fB\-\-login\fP Еквівалент \fB\-l\fP. .TP \fB\-\-noediting\fP Не використовувати бібліотеку GNU \fBreadline\fP для читання рядків команд, якщо оболонка є інтерактивною. .TP \fB\-\-noprofile\fP Do not read either the system\-wide startup file .FN /etc/profile or any of the personal initialization files .FN \*~/.bash_profile , .FN \*~/.bash_login , or .FN \*~/.profile . By default, \fBbash\fP reads these files when it is invoked as a login shell (see .SM \fBINVOCATION\fP below). .TP \fB\-\-norc\fP Do not read and execute the personal initialization file .FN \*~/.bashrc if the shell is interactive. This option is on by default if the shell is invoked as \fBsh\fP. .TP \fB\-\-posix\fP Увімкнути режим posix; змінити поведінку \fBbash\fP там, де типові дії відрізняються від стандарту .SM POSIX так, щоб відповідати стандарту .TP \fB\-\-restricted\fP Оболонка стає обмеженою (див. .SM \fBОБМЕЖЕНА ОБОЛОНКА\fP нижче). .TP \fB\-\-verbose\fP Еквівалент \fB\-v\fP. .TP \fB\-\-version\fP Вивести дані щодо версії цього екземпляра \fBbash\fP до стандартного виведення і завершити роботу зі станом виходу «успіх». .SH АРГУМЕНТИ Якщо після обробки параметрів у рядку команди лишаться аргументи, і не вказано ні параметр \fB\-c\fP, ні параметр \fB\-s\fP, перший аргумент буде оброблено як назву файла, у якому зберігаються команди оболонки. Якщо \fBbash\fP викликано у такий спосіб, для \fB$0\fP буде встановлено значення назви цього файла, а решту аргументів буде розподілено між іншими позиційними параметрами послідовно. \fBBash\fP прочитає і виконає команди із вказаного файла, а потім завершить роботу. Кодом стану виходу \fBbash\fP буде код стану виходу останньої виконаної у скрипті команди. Якщо не буде виконано жодної команди, кодом стану виходу буде 0. Спершу \fBbash\fP виконає спробу відкрити файл у поточному каталозі. Якщо файла із вказаною назвою не буде знайдено, оболонка виконає пошук файла скрипту у каталогах змінної середовища .SM \fBPATH\fP. .SH ВИКЛИК A \fIlogin shell\fP є той, чий перший символ нульового аргументу є \fB\-\fP, або той, що починається з параметра \fB\-\-login\fP. .PP \fIІнтерактивною оболонкою\fP є оболонка, яку запущено без аргументів, які не є аргументами параметрів (якщо не вказано параметр \fB\-s\fP), і без параметра \fB\-c\fP, чиї стандартні джерело вхідних даних та стандартне виведення помилок з'єднано з терміналами (як це визначено \fIisatty\fP(3)), або оболонка, яку запущено з параметром \fB\-i\fP. Якщо \fBbash\fP є інтерактивною, \fBBash\fP встановлює .SM \fBPS1\fP, а \fB$\-\fP включає \fBi\fP, що надає змогу скрипту оболонки або файлу запуску перевіряти відповідний стан. .PP Нижче наведено опис того, як \fBbash\fP виконує свої файли запуску. Якщо існує якийсь з цих файлів, але його не можна прочитати, \fBbash\fP повідомляє про помилку. Записи з тильдою розгортаються до назв файлів, як це описано нижче у підрозділі \fBРозгортання з тильдою\fP розділу .SM \fBРОЗГОРТАННЯ\fP. .PP When \fBbash\fP is invoked as an interactive login shell, or as a non\-interactive shell with the \fB\-\-login\fP option, it first reads and executes commands from the file .FN /etc/profile , if that file exists. After reading that file, it looks for .FN \*~/.bash_profile , .FN \*~/.bash_login , and .FN \*~/.profile , in that order, and reads and executes commands from the first one that exists and is readable. The \fB\-\-noprofile\fP option may be used when the shell is started to inhibit this behavior. .PP When an interactive login shell exits, or a non\-interactive login shell executes the \fBexit\fP builtin command, \fBbash\fP reads and executes commands from the file .FN \*~/.bash_logout , if it exists. .PP When an interactive shell that is not a login shell is started, \fBbash\fP reads and executes commands from .FN \*~/.bashrc , if that file exists. The \fB\-\-norc\fP option inhibits this behavior. The \fB\-\-rcfile\fP \fIfile\fP option causes \fBbash\fP to use \fIfile\fP instead of .FN \*~/.bashrc . .PP Коли \fBbash\fP запущено неінтерактивно, щоб запустити скрипт оболонки, наприклад, воно шукає змінну .SM \fBBASH_ENV\fP у оточенні, якщо знаходить, то розкриває її значення, і використовує розкрите значення, як назву файлу, який треба прочитати і виконати. \fBBash\fP поводиться, ніби виконують наступну команду: .PP .RS .EX if [ \-n \*"$BASH_ENV\*" ]; then . \*"$BASH_ENV\*"; fi .EE .RE .PP але значення змінної .SM \fBPATH\fP не використовується для пошуку назви файлу. .PP If \fBbash\fP is invoked with the name \fBsh\fP, it tries to mimic the startup behavior of historical versions of \fBsh\fP as closely as possible, while conforming to the .SM POSIX standard as well. When invoked as an interactive login shell, or a non\-interactive shell with the \fB\-\-login\fP option, it first attempts to read and execute commands from .FN /etc/profile and .FN \*~/.profile , in that order. The \fB\-\-noprofile\fP option inhibits this behavior. When invoked as an interactive shell with the name \fBsh\fP, \fBbash\fP looks for the variable .SM \fBENV\fP, expands its value if it is defined, and uses the expanded value as the name of a file to read and execute. Since a shell invoked as \fBsh\fP does not attempt to read and execute commands from any other startup files, the \fB\-\-rcfile\fP option has no effect. A non\-interactive shell invoked with the name \fBsh\fP does not attempt to read any other startup files. .PP При виклику за назвою \fBsh\fP, \fBbash\fP входить у режим \fIposix\fP після читання файлів запуску. .PP Якщо \fBbash\fP запущено у режимі posix або з параметром командного рядка \fB\-\-posix\fP, програма виконуватиме усі настанови стандарту .SM POSIX для файлів запуску. У цьому режимі інтерактивні оболонки розгортатимуть змінну .SM \fBENV\fP, читатимуть і виконуватимуть команди з файла, назва якого визначається розгорнутим значенням. Читання будь\-яких інших файлів запуску не виконуватиметься. .PP \fBBash\fP attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the historical and rarely\-seen remote shell daemon, usually \fIrshd\fP, or the secure shell daemon \fIsshd\fP. If \fBbash\fP determines it is being run non\-interactively in this fashion, it reads and executes commands from .FN \*~/.bashrc , if that file exists and is readable. \fBBash\fP does not read this file if invoked as \fBsh\fP. The \fB\-\-norc\fP option inhibits this behavior, and the \fB\-\-rcfile\fP option makes \fBbash\fP use a different file instead of .FN \*~/.bashrc , but neither \fIrshd\fP nor \fIsshd\fP generally invoke the shell with those options or allow them to be specified. .PP Якщо оболонку запущено із використанням ідентифікатора ефективного користувача (групи) рівного ідентифікатору справжнього користувача (групи), і не вказано параметр \fB\-p\fP, програма не читатиме жодних файлів запуску, функції оболонки не успадковуватимуться з середовища, змінні .SM \fBSHELLOPTS\fP, .SM \fBBASHOPTS\fP, .SM \fBCDPATH\fP та .SM \fBGLOBIGNORE\fP, якщо їх використано у середовищі, буде проігноровано, а для ідентифікатора ефективного користувача буде встановлено значення ідентифікатора справжнього користувача. Якщо при виклику буде використано параметр \fB\-p\fP, поведінка при запуску буде тією самою, але значення ідентифікатора ефективного користувача не скидатиметься. .SH ОЗНАЧЕННЯ У решті цього документа використано наведені нижче визначення. .PD 0 .TP \fBпропуск\fP Пробіл або табуляція. .TP \fBwhitespace\fP Символ з класу символів \fBspace\fP у поточній локалі або символ, для якого \fIisspace\fP(3) повертає істинне значення (true). .TP \fBслово\fP Послідовність символів, яка обробляється оболонкою як єдиний модуль. Також відома як \fBжетон\fP. .TP \fBназва\fP A \fIслово\fP, що містить лише алфавітно\-цифрові символи та підкреслення, та починається з літери або підкреслення. Також, на якого посилаються, як \fBidentifier\fP. .TP \fBметасимвол\fP Символ, який, якщо не брати його у лапки, відокремлює слова. Таким символом може бути: .br .RS .PP .if t \fB| & ; ( ) < > space tab newline\fP .if n \fB| & ; ( ) < > space tab newline\fP .RE .TP \fBоператор керування\fP \fIЖетон\fP, який виконує контрольну функцію. Один з таких символів: .RS .PP .if t \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .if n \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .RE .PD .SH "ЗАРЕЗЕРВОВАНІ СЛОВА" \fIЗарезервовані слова\fP — слова, які мають особливе значення для оболонки. Вказані нижче слова буде розпізнано як зарезервовані слова, якщо їх не було нейтралізовано, і якщо вони є першим словом команди (див. .SM \fBГРАМАТИКА ОБОЛОНКИ\fP нижче), третім словом команди \fBcase\fP або \fBselect\fP (коректним є лише \fBin\fP) або третім словом команди \fBfor\fP (коректними є лише \fBin\fP і \fBdo\fP): .if t .RS .PP .B .if n ! case coproc do done elif else esac fi for function if in select \ then until while { } time [[ ]] .if t ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE .SH "ГРАМАТИКА ОБОЛОНКИ" У цьому розділі описано синтаксис різних форм команд оболонки. .SS "Прості команди" \fIПростою командою\fP є послідовність надання значень змінним, після якої вказано відокремлені \fBпропусками\fP слова і переспрямування і яка завершується \fIоператором керування\fP. Перше слово визначає команду, яку буде виконано, її буде передано як нульовий аргумент. Решту слів буде передано як аргументи команди, яку викликано. .PP Повернутим значенням \fIпростої команди\fP є її код стану виходу або 128+\fIn\^\fP, якщо команду було перервано із використанням сигналу \fIn\fP. .SS Конвеєри \fIКонвеєр\fP є послідовністю однією або декількох команд, які відокремлено одним із керівних операторів \fB|\fP або \fB|&\fP. Формат конвеєра є таким: .RS .PP [\fBtime\fP [\fB\-p\fP]] [ ! ] \fIкоманда1\fP [ [\fB|\fP\(bv\fB|&\fP] \fIкоманда2\fP .\|.\|.\& ] .RE .PP Стандартне виведення команди \fIкоманда1\fP з'єднується каналом зі стандартним введенням команди \fIкоманда2\fP. Це з'єднання виконується до будь\-яких переспрямувань, які визначено командою (див. .SM \fBПЕРЕСПРЯМУВАННЯ\fP нижче). Якщо \fB|&\fP є оператором конвеєра, стандартне виведення помилок команди \fIкоманда1\fP, на додачу до її стандартного виведення, з'єднано зі стандартним введенням команди \fIкоманда2\fP каналом; це скорочення від \fB2>&1 |\fP. Це неявне переспрямовування стандартного виведення помилок до стандартного виведення виконується після будь\-яких переспрямувань, які визначаються командою \fIкоманда1\fP. .PP Кодом стану повернення конвеєра є код стану виходу останньої команди, якщо не вказано параметр \fBpipefail\fP. Якщо увімкнено \fBpipefail\fP, кодом стану повернення конвеєра є значення останньої (найправішої) команди, яка завершила роботу із ненульовим кодом стану, або нуль, якщо усі команди було виконано успішно. Якщо перед конвеєром вказано зарезервоване слово \fB!\fP, кодом стану виходу конвеєра є логічне заперечення коду стану виходу, який описано вище. Якщо команди у конвеєрі обробки виконуються синхронно, оболонка очікує на завершення виконання усіх команд у конвеєрі, перш ніж повернути значення. .PP Якщо перед конвеєром вказано зарезервоване слово \fBtime\fP, після завершення виконання конвеєра буде виведено звіт щодо часу спожитого під час виконання у просторі користувача і у просторі системи. Параметр \fB\-p\fP змінює формат виведення на такий, який визначено .SM POSIX . Якщо оболонка працює у \fIрежимі posix\fP, вона не розпізнає \fBtime\fP як зарезервоване слово, якщо наступний жетон починається з .Q \- . Можна встановити для змінної середовища .SM \fBTIMEFORMAT\fP значення рядка форматування, який визначає спосіб показу даних щодо часу; див. опис .SM \fBTIMEFORMAT\fP у розділі \fBЗмінні оболонки\fP нижче. .PP Якщо оболонка перебуває у режимі posix, після \fBtime\fP можна використати як єдине слово у простій команді. У цьому випадку оболонка показуватиме загальний час, який спожито у просторах користувача і системи оболонкою та її дочірніми процесами. Змінною .SM \fBTIMEFORMAT\fP задається форматування даних щодо часу. .PP Кожна команда у багатокомандному конвеєрі, де створено канали, виконується у \fIпідоболонці\fP, яка є окремим процес. Див. .SM \fBСЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД\fP, щоб ознайомитися із описом підоболонок і середовища підкоманд. Якщо використано параметр \fBlastpipe\fP за допомогою вбудованого запису \fBshopt\fP (див. опис \fBshopt\fP нижче), останній елемент конвеєра може бути виконано процесом оболонки, якщо керування завданнями не є активним. .SS Списки \fIСписок\fP є послідовністю одного або декількох конвеєрів команд, які відокремлено одним з операторів \fB;\fP, \fB&\fP, \fB&&\fP або \fB||\fP, і, якщо потрібно, завершено одним із символів \fB;\fP, \fB&\fP або \fB<розривом рядка>\fP. .PP З цих операторів списку \fB&&\fP і \fB||\fP мають однакову пріоритетність. Нижчу за них пріоритетність мають \fB;\fP і \fB&\fP, які теж мають однакову пріоритетність. .PP У \fIсписку\fP може бути використано послідовність з одного або декількох символів нового рядка замість крапки з комою для відокремлення команд. .PP Якщо команда завершується оператором керування \fB&\fP, оболонка виконує команду у \fIфоновому режимі\fP у підоболонці. Оболонка не чекатиме на завершення виконання такої команди, кодом стану повернення завжди буде 0. Такі команди будемо називати \fIасинхронними\fP. Команди, які відокремлено символом \fB;\fP, буде виконано послідовно. Оболонка очікуватиме на виконання кожної команди, перш ніж перейти до наступної. Кодом стану повернення буде код стану повернення останньої виконаної команди. .PP Списки І та АБО є послідовностями одного або більше каналів розділених керуючими операторами \fB&&\fP та \fB||\fP відповідно. Списки І та АБО виконуються з лівою асоціативністю. Список І має форму .RS .PP \fIкоманда1\fP \fB&&\fP \fIкоманда2\fP .RE .PP \fIкоманду2\fP буде виконано лише тоді, якщо \fIкоманда1\fP повертає нульовий код стану виходу (успіх). .PP Список OR має форму .RS .PP \fIкоманда1\fP \fB||\fP \fIкоманда2\fP .RE .PP Команду \fIкоманда2\fP буде виконано тоді і лише тоді, коли команда \fIкоманда1\fP повертає ненульовий код стану виходу. Кодом стану повернення списків AND і OR є код стану виходу останньої виконаної команди у списку. .SS "Складені команди" \fIСкладена команда\fP є однією з описаних нижче команд. У більшості випадків \fIсписок\fP в описі команди може відокремлюватися від решти команди одним або кількома новими рядками, а замість крапки з комою може слідувати новий рядок. .TP (\fIсписок\fP) \fIСписок\fP виконується у підоболонки (дивіться .SM \fBСЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД\fP нижче, де наведено опис середовища підоболонки). Присвоєння змінних і вбудовані команди, які впливають на середовище оболонки, не залишаються в силі після виконання команди. Статус повернення — це стан виходу списку команд \fIсписок\fP. .TP { \fIсписок\fP; } \fIсписок\fP просто виконується в поточному середовищі оболонки. \fIСписок\fP повинен завершуватися новим рядком або крапкою з комою. Це називається \fIгруповою командою\fP. Стан повернення — це стан виходу списку команд \fIсписок\fP. .IP Зверніть увагу, що на відміну від метасимволів \fB(\fP та \fB)\fP, \fB{\fP та \fB}\fP є \fIзарезервованими словами\fP і має відбуватися там, де дозволено розпізнавати зарезервоване слово. Оскільки вони не викликають розриву слова, вони повинні відділятися від списку команд \fIсписок\fP пробілами або іншими метасимволами оболонки. .TP ((\fIвираз\fP)) Арифметичний \fIвираз\fP обчислюється згідно правил описаних нижче під .SM \fBАРИФМЕТИЧНІ ОБЧИСЛЕННЯ\fP. Якщо значення виразу не нуль, повертається стан 0; в іншому випадку повертається стан 1. Для аргументу \fIвираз\fP буде виконано такі самі розгортання, які було б виконано, якби його було взято у подвійні лапки, але неекрановані символи подвійних лапок у самому аргументі \fIвираз\fP не буде оброблено особливим чином і буде просто вилучено. Оскільки це може потенційно призвести до порожніх рядків, ця команда вважає це виразами, результатом обчислення яких є 0. .TP \fB[[\fP \fIвираз\fP \fB]]\fP .PD Обробляє умовний \fIвираз\fP і повертає нульовий стан (true) або ненульовий стан (false). Вирази складаються з первинних частин, описаних нижче у розділі .SM \fBУМОВНІ ВИРАЗИ\fP. Для слів між \fB[[\fP і \fB]]\fP не буде виконано поділ на слова та розгортання шляхів. Оболонка виконає розгортання тильди, розширення параметрів і змінних, арифметичне розширення, підставляння команд, підставляння процесу та вилучення лапок для цих слів. Умовні оператори, такі як \fB\-f\fP, повинні бути без лапок, щоб бути визнаними основними. .IP Якщо використано \fB[[\fP, оператори \fB<\fP і \fB>\fP лексикографічно упорядковуватимуться з використанням порядку поточної локалі. .IP Коли використовуються оператори \fB==\fP і \fB!=\fP, рядок праворуч від оператора вважається взірцем і відповідає правилам, описаним нижче в розділі \fBВідповідність за взірцем\fP, ніби було увімкнено параметр оболонки \fBextglob\fP. Оператор \fB=\fP еквівалентний \fB==\fP. Якщо увімкнено параметр оболонки \fBnocasematch\fP, пошук збігів виконується без урахування регістру символів алфавіту. Буде повернуто значення 0, якщо рядок відповідає (\fB==\fP) або не відповідає (\fB!=\fP) взірцю, і 1 в іншому випадку. Якщо будь\-яку частину взірця взято у лапки, відповідність частину у лапках буде встановлено безпосередньо, без використання будь\-якої особливої відповідності взірців. .IP Доступним є додатковий двійковий оператор, \fB=\*~\fP, із тим самим рівнем пріоритетності, що і as \fB==\fP and \fB!=\fP. Якщо ним скористатися, рядок праворуч від оператора буде оброблено як розширений формальний вираз .SM POSIX і встановлено відповідність (за допомогою інтерфейсів .SM POSIX \fIregcomp\fP і \fIregexec\fP, які зазвичай описано у \fIregex\fP(3)). Буде повернуто значення 0, якщо рядок збігається із взірцем, і 1 в іншому випадку. Якщо формальний вираз є синтаксично помилковим, повернутим значенням умовного виразу буде 2. Якщо увімкнено параметр оболонки \fBnocasematch\fP, відповідність встановлюватиметься без врахування регістру символів абетки. .IP Будь\-яку частину взірця можна взяти у лапки, якщо відповідність цієї частини рядка слід встановлювати буквально. Це означає, що будь\-який символ у нейтралізованій частині буде використано як є, а не з врахуванням відповідності спеціальному взірцю. Якщо взірець зберігається у змінній оболонки, нейтралізація розгортання змінної встановлює режим примусового встановлення відповідності за взірцем як звичайним рядком. Будьте обережними із виразами у квадратних дужках у формальних виразах, оскільки звичайна нейтралізація і символи взірців втрачають значення у квадратних дужках. .IP Відповідність буде встановлено, якщо взірець відповідає будь\-якій частині рядка. Прив'яжіть взірець за допомогою операторів формальних виразів \fB\*^\fP і \fB$\fP, щоб встановити примусову відповідність усьому рядку. .IP У змінній\-масиві .SM \fBBASH_REMATCH\fP зберігається запис частин рядка, які відповідають взірцю. Елемент .SM \fBBASH_REMATCH\fP з індексом 0 частину рядка яка відповідає усьому формальному виразу. Підрядки, які відповідають взятим у дужки підвиразам у формальному виразі, зберігаються у решті індексованих елементів масиву .SM \fBBASH_REMATCH\fP. Елемент .SM \fBBASH_REMATCH\fP із індексом \fIn\fP ж частиною рядка, що відповідає взятому у дужки \fIn\fP\-му підвиразу. \fBBash\fP встановлює .SM \fBBASH_REMATCH\fP у загальній області видимості; оголошення її як локальної змінної призведе до неочікуваних результатів. .IP Вираз можна поєднувати за допомогою вказаних нижче операторів, які упорядковано за спаданням пріоритетності: .IP .RS .PD 0 .TP \fB( \fP\fIвираз\fP\fB )\fP Повертає значення виразу \fIвираз\fP. Цим можна скористатися для перевизначення звичайної пріоритетності операторів. .TP \fB! \fP\fIвираз\fP True, якщо \fIвираз\fP має значення false. .TP \fIвираз1\fP \fB&&\fP \fIвираз2\fP True, якщо обидва, \fIвираз1\fP і \fIвираз2\fP, мають значення true. .TP \fIвираз1\fP \fB||\fP \fIвираз2\fP True, якщо \fIвираз1\fP або \fIвираз2\fP має значення true. .PD .LP При використанні операторів \fB&&\fP і \fB||\fP значення виразу \fIвираз2\fP не обчислюватиметься, якщо значення виразу \fIвираз1\fP достатньо для визначення повернутого значення усього виразу умови. .RE .TP \fBfor\fP \fIназва\fP [ [ \fBin\fP \fIслово ...\fP ] ; ] \fBdo\fP \fIсписок\fP ; \fBdone\fP По\-перше, список слів, за яким вказано \fBin\fP, розгортається у список записів. Потім для змінної \fIназва\fP встановлюється значення кожного з елементів списку за чергою, і кожного разу виконується \fIсписок\fP. Якщо пропущено \fIслово\fP \fBin\fP, команда \fBfor\fP виконає \fIсписок\fP для усіх встановлених позиційних параметрів (див. .SM \fBПАРАМЕТРИ\fP нижче). Повернутий код стану буде кодом стану виходу останньої виконаної команди. Якщо розгортання записів за \fBin\fP призведе до створення порожнього списку, команди не виконуватимуться, а кодом стану повернення буде 0. .TP \fBfor\fP (( \fIвираз1\fP ; \fIвираз2\fP ; \fIвираз3\fP )) [;] \fBdo\fP \fIсписок\fP ; \fBdone\fP Спочатку, арифметичний вираз \fIвираз1\fP обчислюється за правилами, описаними нижче у розділі .SM \fBАРИФМЕТИЧНІ ОБЧИСЛЕННЯ\fP. Потім, обчислення арифметичного виразу \fIexpr2\fP повторюється поки не досягне нуля. Кожного разу, коли результатом обчислення виразу \fIвираз2\fP є нуль, буде виконано \fIсписок\fP і обчислено арифметичний вираз \fIвираз3\fP. Якщо якогось виразу не буде виявлено, вважатиметься, що його значенням є 1. Повернутим значенням є стан виходу останньої команди \fIсписок\fP, яку виконано або ненульове значення, якщо будь\-який вираз є некоректним. .IP Для керування виконанням циклу скористайтеся вбудованими командами \fBbreak\fP і \fBcontinue\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .TP \fBselect\fP \fIназва\fP [ \fBin\fP \fIслово\fP ] ; \fBdo\fP \fIсписок\fP ; \fBdone\fP Спочатку буде розгорнуто список слів після \fBin\fP. Результатом буде список записів. Набір розгорнутих слів буде виведено до стандартного виведення помилок, перед кожним з яких буде дописано номер. Якщо буде пропущено \fIслово\fP після \fBin\fP, буде виведено позиційні параметри (див. .SM \fBПАРАМЕТРИ\fP нижче). Після цього \fBselect\fP буде показано запит .SM \fBPS3\fP і прочитано рядок зі стандартного введення. Якщо рядок складається з номера, який відповідає одному зі показаних слів, \fBselect\fP надасть слову буде надано значення \fIназва\fP. Якщо рядок є порожнім, слова і запит буде показано ще раз. Якщо буде прочитано символ кінця файла (EOF), виконання команди \fBselect\fP завершується із поверненням стану 1. Будь\-яке інше прочитане значення призведе до того, що параметру \fIназва\fP буде надано порожнє значення (null). Прочитаний рядок буде збережено у змінній .SM \fBREPLY\fP. Список команд \fIсписок\fP буде виконано після кожного вибору варіанта, аж доки не буде виконано команду \fBbreak\fP. Станом виходу \fBselect\fP є стан виходу останньої команди, яку буде виконано у списку \fIсписок\fP, або нуль, якщо не буде виконаної жодної команди. .TP \fBcase\fP \fIслово\fP \fBin\fP [ [(] \fIвзірець\fP [ \fB|\fP \fIвзірець\fP ] .\|.\|.\& ) \fIсписок\fP ;; ] .\|.\|.\& \fBesac\fP Команда \fBcase\fP спочатку розгортає \fIслово\fP і намагається послідовно встановити його відповідність кожному із взірців \fIвзірець\fP за допомогою правил встановлення відповідності, які описано у розділі \fBВідповідність за взірцем\fP нижче. Слово \fIслово\fP буде розгорнуто із використанням розгортання тильди, розгортання параметрів і змінних, арифметичних обчислень, заміни команд, підставляння процесів та вилучення лапок. Кожен із інспектованих взірців \fIвзірець\fP буде розгорнуто із використанням розгортання тильди, розгортання параметрів і змінних, арифметичних обчислень, заміни команд, підставляння процесів та вилучення екранування. Якщо увімкнено параметр оболонки \fBnocasematch\fP, відповідність встановлюватиметься без врахування регістру символів абетки. \fIВиразом\fP є список взірців і пов'язаний \fIсписок\fP. .IP Якщо буде встановлено відповідність, \fBcase\fP виконає відповідний список команд \fIсписок\fP. Якщо буде використано оператор \fB;;\fP, після першого ж встановлення відповідності взірцю подальші спроби встановлення відповідності не виконуватимуться. Якщо використати \fB;&\fP замість \fB;;\fP, виконання продовжуватиметься із прив'язкою списку команд \fIсписок\fP до наступного набору взірців. Якщо використати \fB;;&\fP замість \fB;;\fP, оболонка виконає перевірку наступного списку взірців в інструкції, якщо такий є, і виконає будь\-який пов'язаний із нею список команд \fIсписок\fP, якщо буде встановлено відповідність, продовжуючи виконання інструкцій варіанта так, наче не було встановлено відповідності списку взірців. Станом виходу є нуль, якщо жоден із взірців не є відповідним. .IP В іншому випадку, це стан завершення останньої виконаної команди в останньому виконаному \fIсписку\fP. .TP \fBif\fP \fIсписок\fP; \fBthen\fP \fIсписок\fP; [ \fBelif\fP \fIсписок\fP; \fBthen\fP \fIсписок\fP; ] .\|.\|.\& [ \fBelse\fP \fIсписок\fP; ] \fBfi\fP \fBif\fP \fIсписок\fP виконується. Якщо стан виходу дорівнює нулю — виконується \fBthen\fP \fIсписок\fP. В іншому випадку по черзі виконується кожен \fBelif\fP \fIсписок\fP, якщо їхній стан виходу дорівнює нулю, то виконується відповідний \fBthen\fP \fIсписок\fP і команда завершується. Інакше виконується \fBelse\fP \fIсписок\fP, якщо наявний. Станом виходу є стан виходу останньої виконаної команди або нуль, якщо умова не перевірялася. .TP \fBwhile\fP \fIсписок\-1\fP; \fBdo\fP \fIсписок\-2\fP; \fBdone\fP .PD 0 .TP \fBuntil\fP \fIсписок\-1\fP; \fBdo\fP \fIсписок\-2\fP; \fBdone\fP .PD Команда \fBwhile\fP послідовно виконує список команд \fIсписок\-2\fP, доки остання команда у списку команд \fIсписок\-1\fP повертає нульовий стан виходу. Команда \fBuntil\fP є аналогічною до команди \fBwhile\fP, але умова у ній є оберненою: список команд \fIсписок\-2\fP виконуватиметься, доки остання команда у списку команд \fIсписок\-1\fP не поверне ненульовий стан виходу. Станом виходу команд \fBwhile\fP і \fBuntil\fP є стан виходу останньої виконаної команди у списку команд \fIсписок\-2\fP або нуль, якщо не було виконано жодної команди. .SS Копроцеси \fIКопроцес\fP — команда оболонки, перед якою вказано зарезервоване слово \fBcoproc\fP. Виконання копроцесу відбувається асинхронно у підоболонці так, наче команду було завершено керівним оператором \fB&\fP. При цьому, буде встановлено двобічний канал обміну даними між оболонкою, у якій виконується копроцес, і копроцесом. .PP Синтаксис для копроцесу: .RS .PP \fBcoproc\fP [\fIНАЗВА\fP] \fIкоманда\fP [\fIпереспрямування\fP] .RE .PP Створює копроцес із назвою \fIНАЗВА\fP. Аргументом \fIкоманда\fP може бути або проста команда, або складена команда (див. вище). Аргументом \fIНАЗВА\fP є назва змінної середовища. Якщо аргументу \fIНАЗВА\fP не вказано, типовою назвою є \fBCOPROC\fP. .PP Рекомендована форма використання копроцесу: .RS .PP \fBcoproc\fP \fIНАЗВА\fP { \fIкоманда\fP [\fIпереспрямування\fP]; } .RE .PP Ця форма є бажаною, оскільки прості команди призводять до обов'язкового іменування копроцесу назвою \fBCOPROC\fP, і нею простіше користуватися, вона є повнішою за інші складені команди. .PP Якщо \fIкоманда\fP є складеною командою, \fIНАЗВА\fP є необов'язковою. Слово після \fBcoproc\fP визначає, чи буде слово оброблено як назву змінної: його буде оброблено як запис \fIНАЗВА\fP, якщо це не є зарезервованим словом, яке впроваджує складену команду. Якщо аргумент \fIкоманда\fP є простою командою, використовувати аргумент \fIНАЗВА\fP не можна; так зроблено, щоб уникнути плутанини між аргументом \fIНАЗВА\fP і першим словом простої команди. .PP При виконанні копроцесу оболонка створює змінну\-масив (див. \fBМасиви\fP нижче) із назвою \fIНАЗВА\fP у контексті оболонки, з якої відбувається виконання. Стандартне виведення команди \fIкоманда\fP буде з'єднано за допомогою каналу обміну даними із дескриптором файла в оболонці, з якої відбувається виконання, і значення цього дескриптора файла буде надано елементу \fIНАЗВА\fP[0]. Стандартне джерело вхідних даних команди \fIкоманда\fP буде з'єднано за допомогою каналу із дескриптором файла у оболонці, з якої відбувається виконання, а значення цього дескриптора файла буде надано елементу \fIНАЗВА\fP[1]. Канал обміну даними буде встановлено до виконання будь\-яких переспрямувань, які вказано командою (див. .SM \fBПЕРЕСПРЯМУВАННЯ\fP нижче). Дескрипторами файлів можна скористатися як аргументами команд оболонки з використанням стандартного розгортання слів. Підоболонки не матимуть доступу до дескрипторів файлів, окрім дескрипторів, які створено для виконання команд та підставляння процесів. .PP Доступ до ідентифікатора процесу оболонки, яку викликано для виконання копроцесу, можна отримати як значення змінної \fIНАЗВА\fP_PID. Для очікування на завершення копроцесу можна скористатися вбудованою командою \fBwait\fP. .PP Оскільки копроцеси створюються як асинхронні команди, команда \fBcoproc\fP завжди повертає успіх. Стан вертання копроцесу є станом виходу \fIкоманди\fP. .SS "Визначення функцій оболонки" Функція оболонки це обʼєкт, що викликається як проста команда і виконує складену команду з новим набором позиційних параметрів. Функція оболонки оголошується наступним чином: .TP \fIfname\fP () \fIскладена_команда\fP [\fIпереспрямування\fP] .PD 0 .TP \fBfunction\fP \fIназва_функції\fP [()] \fIскладена_команда\fP [\fIпереспрямування\fP] .PD Ця команда визначає функцію із назвою \fIназва_функції\fP. Використання зарезервованого слова \fBfunction\fP є необов'язковим. Якщо вказано зарезервоване слово \fBfunction\fP, круглі дужки є необов'язковими. \fIВмістом\fP функції є складена команда \fIскладена_команда\fP (див. \fBСкладені команди\fP вище). Ця команда, зазвичай, є \fIсписком\fP команд між { і }, але може бути будь\-якою командою з наведеного вище списку \fBскладених команд\fP, якщо використано зарезервоване слово \fBfunction\fP, але круглі дужки не вказано, рекомендуємо використовувати фігурні дужки. Складену команду \fIскладена_команда\fP буде викликано кожного разу, коли як назву простої команди використано \fIназва_функції\fP. У режимі posix \fIназвв_функції\fP має бути коректною \fIназвою\fP оболонки і не може збігатися із назвою однієї із \fIспеціальних вбудованих команд\fP .SM POSIX . У типовому режимі назвою функції може бути будь\-яке слово оболонки, що не містить лапок та символу .PP Будь\-які переспрямовування (див. .SM \fBПЕРЕСПРЯМОВУВАННЯ\fP нижче), вказані під час визначення функції, виконуються під час виконання функції. .PP Станом виходу визначення функції є нуль, якщо не буде виявлено синтаксичних помилок або призначеної лише для читання функції із тією самою назвою. При виконанні станом виходу функції є стан виходу останньої виконаної команди у її вмісті. (Див. .SM \fBФУНКЦІЇ\fP нижче.) .SH КОМЕНТАРІ У неінтерактивній оболонці або у інтерактивній оболонці, у якій вбудованій команді \fBshopt\fP передано аргумент \fBinteractive_comments\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче), якщо почати слово \fB#\fP, буде вставлено коментар. Слово починається на початку рядка, після пробілу без лапок або після оператора. Коментар спричиняє ігнорування решти символів у відповідному рядку. У інтерактивній оболонці без параметра \fBinteractive_comments\fP можливості додавання коментарів не передбачено. Параметр \fBinteractive_comments\fP у інтерактивних оболонках типово увімкнено. .SH НЕЙТРАЛІЗАЦІЯ \fIНейтралізацію\fP використовують для усування спеціального призначення певних символів або слів у командній оболонці. Нейтралізацією можна скористатися для вимикання обробки спеціальних символів, для запобігання непотрібному розпізнаванню зарезервованих слів та для запобігання розгортанню параметрів. .PP Усі \fIметасимволи\fP з наведено у розділі .SM \fBВИЗНАЧЕННЯ\fP списку мають особливе значення для оболонки — їх слід нейтралізувати, якщо вони мають бути просто буквальними словами. .PP Якщо використано можливості доповнення за журналом команд (див. .SM \fBДОПОВНЕННЯ ЗА ЖУРНАЛОМ\fP нижче), символ \fIдоповнення за журналом\fP, зазвичай \fB!\fP, слід нейтралізувати для запобігання доповненню. .PP Передбачено чотири механізми нейтралізації: \fIсимвол екранування\fP, одинарні лапки, подвійні лапки і комбінації долара із одинарними лапками. .PP Символ зворотної похилої риски без лапок (\fB\e\fP) є \fIсимволом екранування\fP. Він зберігає буквальне значення наступного за ним символу з вилученням будь\-якого спеціального призначення, окрім символу <нового рядка>. Якщо буде виявлено пару \fB\e\fP<новий рядок> і зворотну похилу риску не нейтралізовано символ \fB\e\fP<новий рядок> буде оброблено як продовження рядка (тобто, його буде вилучено з потоку вхідних даних і, фактично, проігноровано). .PP Набір символів у одинарних лапках зберігає своє буквальне значення для кожного з символів у лапках. У межах взятого в одинарні лапки тексту не можна використовувати одинарні лапки, навіть якщо їх екрановано символом зворотної похилої риски. .PP Набір символів, взятий у подвійні лапки, зберігає буквальне значення для усіх символів у лапках, окрім символів \fB$\fP, \fB\`\fP, \fB\e\fP і, якщо увімкнено доповнення за журналом, \fB!\fP. Якщо оболонка працює у режимі posix, \fB!\fP не має особливого призначення у подвійних лапках, навіть якщо увімкнено доповнення за журналом. Символи \fB$\fP і \fB\`\fP зберігають своє спеціальне значення у подвійних лапках. Символ зворотної похилої риски зберігає своє спеціальне значення, лише якщо за ним вказано один з таких символів: \fB$\fP, \fB\`\fP, \^\fB\*"\fP\^, \fB\e\fP або \fB<новий рядок>\fP. Зворотні похилі риски, що передують символам без спеціального призначення, замінено не буде. .PP Символ подвійних лапок можна екранувати у взятому у подвійні лапки фрагменті додаванням перед ним символу зворотної похилої риски. Якщо увімкнено доповнення за журналом, його буде виконано для \fB!\fP, якщо цей символ не екрановано символом зворотної похилої риски. Символ зворотної похилої риски перед \fB!\fP не буде вилучено. .PP Спеціальні параметри \fB*\fP і \fB@\fP зберігають спеціальне значення і у подвійних лапках (див. .SM \fBПАРАМЕТРИ\fP нижче). .PP Послідовності символів у формі \fB$\fP\*'\fIрядок\fP\*' оброблятимуться особливим чином, як особливий варіант одинарних лапок. Ці послідовності буде розгорнуто до рядка \fIрядок\fP, а екрановані символом зворотної похилої риски символи у рядку \fIрядок\fP буде замінено так, як це визначено стандартом ANSI C. Екрановані символом зворотної похилої риски послідовності, якщо такі буде виявлено, буде декодовано так: .RS .PD 0 .TP \fB\ea\fP гудок (дзвінок) .TP \fB\eb\fP backspace .TP \fB\ee\fP .TP \fB\eE\fP символ скасування .TP \fB\ef\fP подавання бланку .TP \fB\en\fP новий рядок .TP \fB\er\fP повернення каретки .TP \fB\et\fP горизонтальна табуляція .TP \fB\ev\fP вертикальна табуляція .TP \fB\e\e\fP зворотна похила .TP \fB\e\*'\fP одинарна лапка .TP \fB\e\*"\fP подвійна лапка .TP \fB\e?\fP знак питання .TP \fB\e\fP\fInnn\fP Восьмибітовий символ, значенням якого є вісімкове значення \fInnn\fP (від однієї до трьох вісімкових цифр). .TP \fB\ex\fP\fIHH\fP Восьмибітовий символ, значенням якого є шістнадцяткове значення \fIHH\fP (від однієї до двох шістнадцяткових цифр). .TP \fB\eu\fP\fIHHHH\fP Символ Unicode (ISO/IEC 10646), чиїм значенням є шістнадцяткове значення \fIHHHH\fP (від однієї до чотирьох шістнадцяткових цифр). .TP \fB\eU\fP\fIHHHHHHHH\fP Символ Unicode (ISO/IEC 10646), чиїм значенням є шістнадцяткове значення \fIHHHHHHHH\fP (від однієї до восьми шістнадцяткових цифр). .TP \fB\ec\fP\fIx\fP Символ control\-\fIx\fP. .PD .RE .LP Розгорнутий результат буде виразом в одинарних лапках, так, наче символу долара не було. .SS "Переклад рядків" Взяття рядка у подвійні лапки, перед якими вказано символ долара (\fB$\fP\*"\fIрядок\fP\*") призведе до того, що рядок буде перекладено відповідно до поточної локалі. Пошук і переклад повідомлень буде виконано інфраструктурою \fIgettext\fP з використанням змінних оболонки \fBLC_MESSAGES\fP та \fBTEXTDOMAIN\fP. Якщо поточною локаллю є \fBC\fP або \fBPOSIX\fP, якщо немає доступних перекладів або якщо рядок не перекладено, символ долара буде проігноровано, а рядок буде оброблено як рядок у подвійних лапках, як це описано вище. Це форма екранування подвійними лапками, отже рядок типово лишатиметься взятим у подвійні лапки, є він перекладеним або заміненим чи ні. Якщо увімкнено параметр \fBnoexpand_translation\fP за допомогою вбудованої команди \fBshopt\fP, перекладені рядки буде взято в одинарні лапки, замість подвійних. Див. опис \fBshopt\fP нижче у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP. .SH ПАРАМЕТРИ \fIПараметром\fP є запис, який зберігає значення. Це може бути \fIназва\fP, число або один із спеціальних символів, список яких наведено нижче у розділі \fBСпеціальні параметри\fP. \fIЗмінною\fP будемо називати параметр, який позначено \fIназвою\fP. Змінна має \fIзначення\fP і нуль, один або декілька \fIатрибутів\fP. Атрибути призначаються за допомогою вбудованої команди \fBdeclare\fP (див. \fBdeclare\fP нижче у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP). Вбудовані команди \fBexport\fP і \fBreadonly\fP призначають специфічні атрибути. .PP Параметр встановлено, якщо йому надано значення. Коректним значенням є порожній рядок. Щойно змінну встановлено, встановлення можна скасувати лише за допомогою вбудованої команди \fBunset\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .PP \fIЗмінній\fP надається значення за допомогою інструкції у формі .RS .PP \fIназва\fP=[\fIзначення\fP] .RE .PP Якщо \fIзначення\fP не задано, змінній буде надано значення порожнього рядка. У всіх \fIзначеннях\fP буде виконано розгортання тильди, розгортання параметрів та змінних, заміни команд, арифметичні обчислення та вилучення лапок (див. .SM \fBРОЗГОРТАННЯ\fP нижче). Якщо для змінної встановлено атрибут \fBinteger\fP, \fIзначення\fP буде обчислено як арифметичний вираз, навіть якщо не використано розгортання \fB$((\fP.\|.\|.\&\fB))\fP (див. \fBАрифметичні обчислення\fP нижче). Поділ на слова та розгортання шляхів до файлів не виконуватимуться. Інструкції визначення значень також можуть бути аргументами вбудованих команд \fBalias\fP, \fBdeclare\fP, \fBtypeset\fP, \fB\%export\fP, \fBreadonly\fP та \fBlocal\fP (команди \fIоголошення\fP). У режимі posix ці вбудовані команди можуть з'являтися у команді після одного або декількох екземплярів вбудованих команд \fBкоманда\fP і зберігати ці властивості інструкції встановлення значення. .PP У контексті надання оператором значення змінній оболонки або індексу масиву оператор .Q += додає значення до попереднього значення змінної. Це стосується і аргументів команд \fIоголошення\fP, зокрема \fB\%declare\fP, які приймають інструкції надання значень. Коли .Q += застосовується до змінної, для якої встановлено атрибут \fB\%integer\fP, поточне значення змінної та \fIзначення\fP буде обчислено як арифметичні вирази, а змінній буде надано значення суми результатів. Поточне значення зазвичай є сталим цілим числом, але може бути виразом. Якщо .Q += застосовується до змінної\-масиву за допомогою складеного надання значень (див. \fBArrays\fP нижче), значення змінної не скидається (як це відбувається під час використання .Q = ), а нові значення додаються до масиву, починаючи зі значення, на одиницю більше за максимальний індекс масиву (для індексованих масивів), або додаються як додаткові пари ключ\-значення в асоціативному масиві. При застосуванні до змінної, що має значення рядка, \fIзначення\fP розгортається та додається до значення змінної. .PP Змінній можна встановити атрибут \fInameref\fP за допомогою параметра \fB\-n\fP вбудованих команд \fBdeclare\fP і \fBlocal\fP (див. опис команд \fBdeclare\fP і \fBlocal\fP нижче) для створення \fInameref\fP або посилання на іншу змінну. У такий спосіб можна працювати зі змінними опосередковано. Кожного разу при посиланні на змінну nameref, встановленні її значення, скасуванні встановлення значення або внесенні змін до атрибутів (окрім використання та зміни самого атрибуту \fInameref\fP) дію буде виконано зі змінною, назвою якої є значення змінної nameref. Типовим використанням nameref у функціях оболонки є посилання на змінну, чия назва передається як аргумент функції. Наприклад, якщо назву змінної передано до функції оболонки як її перший аргумент, виконання .PP .RS .EX declare \-n ref=$1 .EE .RE .PP у межах функції створює локальну змінну nameref \fBref\fP, чиїм значенням є назва змінної, яку передано як перший аргумент. Посилання і встановлення значень, а також зміну її атрибутів буде оброблено як посилання, встановлення значень та внесення змін до атрибутів змінної, чию назву було передано як \fB$1\fP. Якщо керівна змінна у циклі \fBfor\fP має атрибут nameref, при виконанні циклу список слів може бути списком змінних оболонки, а посилання на назву буде встановлено для кожного слова у списку за чергою. Змінним\-масивам не можна надавати атрибут \fBnameref\fP. Втім змінні nameref можу посилатися на змінні\-масиви і підписані змінні\-масиви. Можна скасовувати значення записів nameref за допомогою параметра \fB\-n\fP вбудованої команди \fBunset\fP. Якщо не додати такий параметр, при виконанні \fBunset\fP із аргументом назви змінної nameref буде скасовано встановлення назви для змінної, на яку посилається змінна nameref. .PP Під час запуску оболонка зчитує своє середовище та створює змінну оболонки з кожної змінної середовища, яка має коректну назву, як описано нижче (див. .SM \fBСЕРЕДОВИЩЕ\fP). .SS "Позиційні параметри" \fIПозиційний параметр\fP — параметр, який позначено однією або декількома цифрами, окрім одинарної цифри 0. Значення позиційних параметрів встановлюються з аргументів оболонки при її виклику. Змінити значення параметрів можна за допомогою вбудованої команди \fBset\fP. Встановлювати значення позиційних параметрів не можна за допомогою звичайних інструкцій встановлення значень. Позиційні параметри тимчасово замінюються при виклику функції оболонки (див. .SM \fBФУНКЦІЇ\fP нижче). .PP Для розгортання позиційних параметрів, які складаються з декількох цифр, їх слід вказувати у фігурних дужках (див. .SM \fBРОЗГОРТАННЯ\fP нижче). Без фігурних дужок цифра після символу $ може посилатися лише на один із перших дев'яти позиційних параметрів (\fB$1\-$9\fP) або на спеціальний параметр \fB$0\fP (див. наступний розділ). .SS "Спеціальні параметри" Деякі з параметрів оболонка обробляє в особливий спосіб. На ці параметри можна лише посилатися. Встановлення їхнього значення у звичайний спосіб заборонено. Спеціальні параметри позначаються одним із наступних символів. .TP .PD 0 \fB*\fP (\fB$*\fP) Розгортається у позиційні параметри, починаючи з першого. Якщо розгорнутий текст не перебуває у подвійних лапках, кожен позиційний параметр розгортатиметься в окреме слово. У контексті, де виконується розгортання слів, ці слова підлягають подальшому поділу на слова і розгортанню назв шляхів. Якщо розгортання відбувається у подвійних лапках, воно відбуватиметься до одного слова, що складатиметься зі значень усіх параметрів, які буде відокремлено першим символом змінної .SM \fBIFS\fP. Тобто, \fB\*"$*\*"\fP еквівалентне до \fB\*"$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB.\|.\|.\*"\fP, де \fIc\fP — перший символ значення змінної .SM \fBIFS\fP. Якщо значення змінної .SM \fBIFS\fP не встановлено, параметри буде відокремлено пробілами. Якщо значення .SM \fBIFS\fP є порожнім, параметри буде з'єднано без проміжних роздільників. .TP \fB@\fP (\fB$@\fP) Розгортається у позиційні параметри, починаючи з першого. У контекстах, де виконується поділ на слова кожен позиційний параметр буде розгорнуто до окремого слова. Якщо розгортання відбувається не у подвійних лапках, ці слова також буде поділено на окремі слова. У контекстах, де не виконується поділу на слова, зокрема у частині значення інструкції з надання значення, розгортання відбувається до одного слова, у якому позиційні параметри буде відокремлено пробілом. Якщо розгортання відбувається у подвійних лапках і виконується поділ на слова, кожен параметр розгорається до окремого слова. Тобто, \fB\&\*"$@\*"\fP є еквівалентом \fB\&\*"\&$1\&\*"\ \*"$2\*"\ .\|.\|.\fP Якщо розгортання у подвійних лапках відбувається у межах слова, результат розгортання першого параметра об'єднується із розгортанням початкової частини початкового слова, а результат розгортання останнього параметра об'єднується із розгортанням останньої частини початкового слова. Якщо позиційних параметрів немає, "\fB$@\fP" і \fB$@\fP ні до чого не розгортаються (тобто, їх буде вилучено). .TP \fB#\fP (\fB$#\fP) Розгортається до числа позиційний параметрів у десятковому записі. .TP \fB?\fP (\fB$?\fP) Розгортається до коду стану виходу останнього виконаного конвеєра переднього плану. .TP \fB\-\fP (\fB$\-\fP) Розкриває прапорці поточних опцій, що вказані при виклику, через вбудовану команду \fBset\fP, або встановлені самою оболонкою (як опція \fB\-i\fP). .TP \fB$\fP (\fB$$\fP) Розкриває ідентифікатор процесу оболонки. В підоболонці воно розкриває до ідентифікатора процесу батьківської оболонки, а не підоболонки. .TP \fB!\fP (\fB$!\fP) Розкриває ІД процесу завдання, що було покладено у фон останнім, або викликане асинхронною командою або черед вбудоване \fBbg\fP (див. .SM \fBJOB CONTROL\fP нижче). .TP \fB0\fP (\fB$0\fP) Розкриває назву оболонки або скрипту оболонки. Воно встановлене під час ініціалізації оболонки. Якщо \fBbash\fP викликано файлом команд, \fB$0\fP встановлюється в назву того файлу. Якщо \fBbash\fP запущено з опцією \fB\-c\fP, тоді \fB$0\fP встановлюється в перший аргумент після рядка для виконання, якщо він присутній. Інакше, воно встановлюється в назву файлу, якого використали для запуску \fBbash\fP, як надано нульовим аргументом. .PD .SS "Змінні оболонки" Оболонка встановлює значення таких змінних: .PP .PD 0 .TP \fB_\fP (\fB$_\fP, підкреслення) Має декілька значень, залежно від контексту. Під час запуску оболонки \fB_\fP отримує значення шляху, який використано для виклику оболонки або назви скрипту, який виконується, у тому вигляді, у якому його передано у середовищі, або списку аргументів. Далі, після розгортання, розгортається до останнього аргументу попередньої простої команди, яку виконано в основному режимі. Також отримує значення повного шляху, який використано для виклику кожної виконаної команди, і записується до середовища, яке експортовано для цієї команди. При перевірці пошти \fB$_\fP розгортається до назви поштового файла, перевірку якого виконує програма. .TP \fBBASH\fP Розгортається до повної назви файла, використано для виклику цього екземпляра \fBbash\fP. .TP \fBBASHOPTS\fP Список відокремлених двокрапками увімкнених параметрів оболонки. Кожне слово у списку є коректним аргументом параметра \fB\-s\fP вбудованої команди \fBshopt\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). Параметри, які з'являються у списку .SM \fBBASHOPTS\fP, є тими параметрами, про які \fBshopt\fP звітує, як про \fIувімкнені\fP. Якщо у середовищі є ця змінна, при запуску \fBbash\fP кожен параметр оболонки у списку буде увімкнено до читання будь\-яких файлів запуску. Якщо цю змінну буде експортовано, у дочірніх оболонка буде увімкнено кожен з параметрів у списку. Цю змінну призначено лише для читання. .TP \fBBASHPID\fP Розгортається до ідентифікатора поточного процесу \fBbash\fP. Це значення, за певних обставин, зокрема підоболонок, які не потребують повторної ініціалізації \fBbash\fP, відрізняється від \fB$$\fP. Спроба встановлення значення .SM \fBBASHPID\fP ні на що не вплине. Якщо скасувати встановлення .SM \fBBASHPID\fP, змінна втрачає свої особливі властивості, навіть якщо згодом значення буде повторно встановлено. .TP \fBBASH_ALIASES\fP Змінна\-асоціативний масив, елементи якого відповідають внутрішньому списку псевдонімів, який підтримується вбудованим засобом \fBalias\fP. Елементи, додані до цього масиву, відображаються в списку псевдонімів; однак скасування елементів масиву наразі не вилучає псевдоніми зі списку псевдонімів. Якщо скасувати встановлення .SM \fBBASH_ALIASES\fP, змінна втрачає свої особливі властивості, навіть якщо її згодом перевстановити. .TP \fBBASH_ARGC\fP Змінна\-масив, значеннями якої є кількості параметрів у кожному кадрі поточного стека викликів виконання \fBbash\fP. Кількість параметрів поточної підпрограми (функції оболонки або сценарію, що виконується за допомогою \fB.\fP або \fBsource\fP) міститься на вершині стека. Коли виконується підпрограма, кількість переданих параметрів передається в .SM \fBBASH_ARGC\fP. Оболонка встановлює .SM \fBBASH_ARGC\fP лише в режимі розширеного налагодження (див. нижче опис параметра \fBextdebug\fP вбудованого засобу \fBshopt\fP). Встановлення \fBextdebug\fP після того, як оболонка почала виконувати сценарій, або посилання на цю змінну, коли \fBextdebug\fP не встановлено, може призвести до невідповідних значень. Встановлення значення .SM \fBBASH_ARGC\fP ні на що не вплине; крім того, встановлення значення змінної не можна скасувати. .TP \fBBASH_ARGV\fP Змінна\-масив, яка містить всі параметрів у поточному стеку викликів виконання \fBbash\fP. Останній параметр останнього виклику підпрограми міститься на вершині стека; перший параметр початкового виклику \- внизу. Коли виконується підпрограма, надані параметри передаються в .SM \fBBASH_ARGV\fP. Оболонка встановлює .SM \fBBASH_ARGV\fP лише в режимі розширеного налагодження (див. нижче опис параметра \fBextdebug\fP вбудованого засобу \fBshopt\fP). Встановлення \fBextdebug\fP після того, як оболонка почала виконувати сценарій, або посилання на цю змінну, коли \fBextdebug\fP не встановлено, може призвести до невідповідних значень. Встановлення значення .SM \fBBASH_ARGV\fP ні на що не впливає, і встановлення значення цієї змінної не можна скасувати. .TP \fBBASH_ARGV0\fP При посиланні ця змінна розширюється до назви оболонки або сценарію оболонки (ідентичне \fB$0\fP; див. опис спеціальних параметрів 0 вище). Встановлення значення .SM \fBBASH_ARGV0\fP встановлює для \fB$0\fP те саме значення. Якщо скасувати встановлення .SM \fBBASH_ARGV0\fP, вона втрачає свої особливі властивості, навіть якщо її згодом перевстановити. .TP \fBBASH_CMDS\fP Змінна\-асоціативний масив, елементи якого відповідають внутрішній геш\-таблиці команд, якe підтримує вбудований засіб \fBhash\fP. Елементи, додані до цього масиву, з'являються в геш\-таблиці; однак скасування елементів масиву наразі не призводить до видалення назв команд із геш\-таблиці. Якщо скасувати встановлення .SM \fBBASH_CMDS\fP, змінна втрачає свої особливі властивості, навіть якщо її згодом перевстановити. .TP \fBBASH_COMMAND\fP Розгортає команду, яка зараз виконується або має виконуватись, якщо оболонка не виконує команду в результаті пастки, і в цьому випадку це команда, яка виконується під час пастки. Якщо скасувати встановлення .SM \fBBASH_COMMAND\fP, змінна втрачає свої особливі властивості, навіть якщо її згодом перевстановити. .TP \fBBASH_EXECUTION_STRING\fP Аргумент команди до параметра виклику \fB\-c\fP. .TP \fBBASH_LINENO\fP Змінна\-масив, чиї елементи є номерами рядків у файлах початкового коду, де викликано кожен відповідний елемент .SM \fBFUNCNAME\fP. \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP є номером рядка у файлі початкового коду (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP), де було викликано \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP (або \fB${BASH_LINENO[\fP\fI$i\-1\fP\fB]}\fP, якщо на нього посилаються у іншій функції оболонки). Для отримання номера поточного рядка скористайтеся .SM \fBLINENO\fP. Встановлення значення .SM \fBBASH_LINENO\fP ні на що не впливає, а встановлення значення не може бути скасовано. .TP \fBBASH_LOADABLES_PATH\fP Список відокремлених двокрапками каталогів, у яких оболонка буде шукати динамічно завантажувані вбудовані команди, які вказано командою \fBenable\fP. .TP \fBBASH_MONOSECONDS\fP Кожне посилання на цей параметр буде розгорнуто до значення, яке повертає монотонний годинник системи, якщо такий доступний. Якщо значення .SM \fBBASH_MONOSECONDS\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBBASH_REMATCH\fP Змінна\-масив, чиїм елементам надають значення за допомогою двійкового оператора \fB=\*~\fP у команді умови \fB[[\fP. Елемент із індексом 0 є частиною рядка, яка точно відповідає усьому формальному виразу. Елемент із індексом \fIn\fP є частиною рядка, яка відповідає \fIn\fP\-ій взятій у круглі дужки частині виразу. .TP \fBBASH_SOURCE\fP Змінна\-масив, чиїми елементами є назви файлів початкового коду, де визначено відповідні назви функцій оболонки у змінній\-масиві .SM \fBFUNCNAME\fP. Функцію оболонки \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP визначають у файлі \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP і викликають з \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP. Встановлення значення .SM \fBBASH_SOURCE\fP ні на що не впливає, а встановлення значення не може бути скасовано. .TP \fBBASH_SUBSHELL\fP Збільшується на одиницю із кожним переходом до наступної підоболонки або середовища підоболонки, якщо оболонку запускають у цьому середовищі. Початковим значенням є 0. Якщо не встановлено значення .SM \fBBASH_SUBSHELL\fP, втрачає свої особливі властивості, навіть якщо згодом значення буде встановлено. .TP \fBBASH_TRAPSIG\fP Встановлює номер сигналу, що відповідає дії перехоплення, що виконується під час її виконання. Див. опис \fBtrap\fP у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче, щоб отримати відомості про номери сигналів та виконання перехоплень. .TP \fBBASH_VERSINFO\fP Призначена лише для читання змінна\-масив, чиїми елементами є дані щодо версії поточного екземпляра \fBbash\fP. Елементи масиву мають такі значення: .PP .RS .TP 24 \fBBASH_VERSINFO[\fP0\fB]\fP Номер основної версії (\fIвипуск\fP). .TP \fBBASH_VERSINFO[\fP1\fB]\fP Номер проміжної версії (\fIверсія\fP). .TP \fBBASH_VERSINFO[\fP2\fB]\fP Рівень латки. .TP \fBBASH_VERSINFO[\fP3\fB]\fP Версія збірки. .TP \fBBASH_VERSINFO[\fP4\fB]\fP Стан випуску (наприклад, \fIbeta\fP). .TP \fBBASH_VERSINFO[\fP5\fB]\fP Значення .SM \fBMACHTYPE\fP. .RE .TP \fBBASH_VERSION\fP Розгортається до рядка, який описує версію цього екземпляра \fBbash\fP (приклад: 5.2.37(3)\-release). .TP \fBCOMP_CWORD\fP Індекс у \fB${COMP_WORDS}\fP слова, на якому перебуває курсор. Доступ до цієї змінної можна отримати лише у функціях оболонки, які викликають можливості програмованого доповнення тексту (див. \fBПрограмоване доповнення\fP нижче). .TP \fBCOMP_KEY\fP Клавіша (або остання клавіша послідовності клавіш), яку буде використано для виклику поточної функції доповнення. Ця змінна доступна лише у функціях оболонки та зовнішніх командах, які викликано можливостями програмованого доповнення (див. \fBПрограмоване доповнення\fP нижче). .TP \fBCOMP_LINE\fP Поточний рядок команди. Ця змінна доступна лише у функціях оболонки та зовнішніх командах, які викликано можливостями програмованого доповнення (див. \fBПрограмоване доповнення\fP нижче). .TP \fBCOMP_POINT\fP Індекс поточної позиції курсора відносно початку поточної команди. Якщо поточною позицією курсора є кінець поточної команди, значення цієї змінної дорівнює \fB${#COMP_LINE}\fP. Ця змінна доступна лише у функціях оболонки та зовнішніх командах, які викликано можливостями програмованого доповнення (див. \fBПрограмоване доповнення\fP нижче). .TP \fBCOMP_TYPE\fP Встановлюють ціле значення, яке відповідає типу доповнення, яке призвело до виклику функції доповнення: \fITAB\fP — звичайне доповнення, \fI?\fP — доповнення за списком після послідовного натискання клавіші табуляції, \fI!\fP — доповнення за списком варіантів при доповненні за частиною слова, \fI@\fP — доповнення за списком, якщо слово лишається незмінним, або \fI%\fP — доповнення за меню. Ця змінна є доступною, лише у функціях оболонки і зовнішніх командах, які викликають можливості програмованого доповнення (див. \fBПрограмоване доповнення\fP нижче). .TP \fBCOMP_WORDBREAKS\fP Набір символів, які бібліотека \fBreadline\fP обробляє як роздільники слів при виконанні доповнення слів. Якщо не встановлено значення .SM \fBCOMP_WORDBREAKS\fP, втрачає свої особливі властивості, навіть якщо значення цієї змінної буде надалі встановлено повторно. .TP \fBCOMP_WORDS\fP Змінна\-масив (див. \fBМасиви\fP нижче), що складається з окремих слів у поточному рядку команди. Рядок буде поділено на слова так, як його ділить \fBreadline\fP, з використанням .SM \fBCOMP_WORDBREAKS\fP, як це описано вище. Ця змінна доступна лише у функціях оболонки, які викликають можливості програмованого доповнення (див. \fBПрограмоване доповнення\fP нижче). .TP \fBCOPROC\fP Змінна\-масив (див. \fBМасиви\fP нижче), яку створено для зберігання дескрипторів файлів для виведення та введення даних для копроцесу без назви (див. \fBКопроцеси\fP вище). .TP \fBDIRSTACK\fP Змінна\-масив (див. \fBМасиви\fP нижче), яка містить поточний вміст стосу каталогів. Каталоги буде розташовано у стосі у тому ж порядку, що і у списку, показаному вбудованою командою \fBdirs\fP. Встановленням значення для елементів цього масиву можна скористатися для внесення змін до записів каталогів у стосі, але додавання та вилучення каталогів слід користуватися вбудованими командами \fBpushd\fP і \fBpopd\fP. Встановлення значення цієї змінної не змінюватиме поточного каталогу. Якщо значення .SM \fBDIRSTACK\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо значення згодом буде встановлено. .TP \fBEPOCHREALTIME\fP Кожне посилання на цей параметр буде розгорнуто до кількості секунд з моменту початку епохи Unix (див. \fItime\fP(3)) у форматі з рухомою крапкою і точністю до мікросекунд. Спроби встановити значення для .SM \fBEPOCHREALTIME\fP буде проігноровано. Якщо значення .SM \fBEPOCHREALTIME\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBEPOCHSECONDS\fP Кожне посилання на цей параметр буде розгорнуто до кількості секунд з моменту початку епохи Unix (див \fItime\fP(3)). Спроби встановити значення для .SM \fBEPOCHSECONDS\fP буде проігноровано. Якщо значення .SM \fBEPOCHSECONDS\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBEUID\fP Розгортається до ідентифікатора ефективного користувача поточного користувача. Ініціалізується під час запуску оболонки. Цю змінну призначено лише для читання. .TP \fBFUNCNAME\fP .PD Змінна\-масив, яка містить назви усіх функцій оболонки у поточному стеку викликів. Елемент із індексом 0 є назвою будь\-якої функції оболонки, яка виконується у поточний момент. Найнижчим елементом у списку (елементом із найбільшим індексом) є .Q main . Ця змінна існує лише тоді, коли виконується функція оболонки. Спроби встановити значення .SM \fBFUNCNAME\fP буде проігноровано. Якщо значення .SM \fBFUNCNAME\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .IP Цією змінною можна скористатися у поєднанні із .SM \fBBASH_LINENO\fP та \fBBASH_SOURCE\fP. У кожного елемента .SM \fB%FUNCNAME\fP є відповідні елементи у .SM \fBBASH_LINENO\fP та .SM \fBBASH_SOURCE\fP для опису стека викликів. Наприклад, \fB\%${FUNCNAME[\fP\fI$i\fP\fB]}\fP було викликано з файла \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP у рядку з номером \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP. На основі цієї інформації показує дані щодо поточного стекла викликів вбудована команда \fBcaller\fP. .PD 0 .TP \fBGROUPS\fP Змінна\-масив, яка містить список груп, учасником яких є поточний користувач. Спроби встановити значення .SM \fBGROUPS\fP буде проігноровано. Якщо значення .SM \fBGROUPS\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBHISTCMD\fP Номер у журналі або індекс у списку журналу поточної команди. Спроби встановити значення .SM \fBHISTCMD\fP буде проігноровано. Якщо значення .SM \fBHISTCMD\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBHOSTNAME\fP Автоматично заповнюється назвою поточного вузла. .TP \fBHOSTTYPE\fP Автоматично встановлюється значення рядка, який унікальним чином описує тип комп'ютера, на якому запущено \fBbash\fP. Типове значення залежить від системи. .TP \fBLINENO\fP Кожне посилання на цей параметр буде замінено на десяткове число, яке відповідає поточному послідовному номеру рядка (відлік починається з 1) у скрипті або функції. Якщо параметр використано не у скрипті або функції, підставлене значення може бути беззмістовним. Якщо значення .SM \fBLINENO\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBMACHTYPE\fP Автоматично встановлюється значення рядка, який повністю описує тип операційної системи, у якій запущено \fBbash\fP у форматі, який визначено стандартом GNU \fIпроцесор\-компанія\-система\fP. Типове значення залежить від системи. .TP \fBMAPFILE\fP Змінна\-масив (див \fBМасиви\fP нижче), яку створено для зберігання тексту, який прочитано за допомогою вбудованої команди \fBmapfile\fP, яку виконано без визначення назви змінної. .TP \fBOLDPWD\fP Попередній робочий каталог, який було встановлено командою \fBcd\fP. .TP \fBOPTARG\fP Значення останнього аргументу параметра, яке оброблено вбудованою командою \fBgetopts\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .TP \fBOPTIND\fP Індекс наступного аргументу параметра, який буде оброблено вбудованою командою \fBgetopts\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .TP \fBOSTYPE\fP Автоматично встановлюється значення рядка, який описує операційну систему, у якій запущено \fBbash\fP. Типове значення залежить від системи. .TP \fBPIPESTATUS\fP Змінна\-масив (див. \fBArrays\fP нижче), що містить список значень стану виходу з команд у останньому виконаному конвеєрі переднього плану, який може складатися з однієї простої команди (див. .SM \fBГРАМАТИКА ОБОЛОНКИ\fP вище). \fBBash\fP встановлює значення для .SM \fBPIPESTATUS\fP після виконання багатоелементних конвеєрів, конвеєрів з обмеженим часом та запереченим конвеєром, простих команд, підоболонок, створених за допомогою оператора ( , складених команд \fB[[\fP та \fB((\fP , а також після помилок, які призводять до переривання виконання команди оболонкою. .TP \fBPPID\fP Ідентифікатор процесу батьківського процесу оболонки. Цю змінну призначено лише для читання. .TP \fBPWD\fP Поточний робочий каталог, який було встановлено командою \fBcd\fP. .TP \fBRANDOM\fP Кожен раз, коли використовується цей параметр, програма розгортає його до випадкового цілого числа у межах від 0 до 32767. Наданням .SM \fBRANDOM\fP значення можна ініціалізувати послідовність псевдовипадкових чисел. Використання однакової основи випадковості у генераторі випадкових чисел створює ту саму послідовність значень. Якщо значення .SM \fBRANDOM\fP не встановлено, змінна втрачає особливі властивості, навіть якщо її значення згодом буде встановлено повторно. .TP \fBREADLINE_ARGUMENT\fP Будь\-який числовий аргумент, наданий команді \fB\%readline\fP, який було визначено за допомогою .Q "bind \-x" (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче), коли її було викликано. .TP \fBREADLINE_LINE\fP Вміст буфера рядків \fBreadline\fP для використання з .Q "bind \-x" (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .TP \fBREADLINE_MARK\fP Позиція позначки (збереженої точки вставлення) у буфері рядків \fBreadline\fP для використання з .Q "bind \-x" (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). Символи між точкою вставлення та позначкою часто називають \fIобластю\fP. .TP \fBREADLINE_POINT\fP Позиція точки вставлення у буфері рядків \fBreadline\fP для використання з .Q "bind \-x" (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .TP \fBREPLY\fP Встановлюється значення рядка вхідних даних, який прочитано командою \fBread\fP, якщо цій команді не передано жодних аргументів. .TP \fBSECONDS\fP Кожен запис цього параметра буде замінено на кількість секунд, які минули із моменту виклику оболонки. Якщо інструкцією буде встановлено значення .SM \fBSECONDS\fP, значення яким буде замінено наступні записи параметра визначатиметься як кількість секунд, які минули з моменту встановлення значення разом із встановленим значенням. Кількість секунд з моменту виклику оболонки та поточний час завжди визначатиметься за допомогою запитів до годинника системи з точністю у секунду. Якщо значення .SM \fBSECONDS\fP не встановлено, змінна втрачає свої особливі властивості, навіть якщо згодом її значення буде встановлено. .TP \fBSHELLOPTS\fP Список відокремлених двокрапками увімкнених параметрів оболонки. Кожне слово у списку є коректним аргументом параметра \fB\-o\fP вбудованої команди \fBset\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). Параметри, які з'являються у списку .SM \fBSHELLOPTS\fP, є тими параметрами, про які \fBset \-o\fP звітує, як про \fIувімкнені\fP. Якщо у середовищі є ця змінна, при запуску \fBbash\fP кожен параметр оболонки у списку буде увімкнено до читання будь\-яких файлів запуску. Якщо цю змінну буде експортовано, дочірні оболонки вмикатимуть кожен параметр у списку. Цю змінну призначено лише для читання. .TP \fBSHLVL\fP Збільшується на одиницю кожного разу, коли запускається екземпляр \fBbash\fP. .TP \fBSRANDOM\fP Each time it is referenced, this variable expands to a 32\-bit pseudo\-random number. The random number generator is not linear on systems that support .FN /dev/urandom or \fIarc4random\fP(3), so each returned number has no relationship to the numbers preceding it. The random number generator cannot be seeded, so assignments to this variable have no effect. If .SM \fBSRANDOM\fP is unset, it loses its special properties, even if it is subsequently reset. .TP \fBUID\fP Розгортається до ідентифікатора поточного користувача. Ініціалізується під час запуску оболонки. Цю змінну призначено лише для читання. .PD .PP Оболонка використовує описані нижче змінні. У деяких випадках \fBbash\fP призначає типове значення змінної. Нижче для таких випадків наведено нотатки. .PP .PD 0 .TP \fBBASH_COMPAT\fP Значення використовують для встановлення рівня сумісності оболонки. Опис різних рівнів сумісності та їхнього впливу на роботу оболонки наведено у розділі .SM \fBРЕЖИМ СУМІСНОСТІ ОБОЛОНКИ\fP. Значення може бути десятковий дріб (наприклад, 4.2) або ціле число (наприклад, 42), яке відповідає бажаному рівню сумісності. Якщо значення .SM \fBBASH_COMPAT\fP не встановлено або встановлено значення порожнього рядка, рівень сумісності буде типовим для поточної версії програми. Якщо для .SM \fBBASH_COMPAT\fP встановлено значення, яке не є коректним значенням рівня сумісності, оболонка виведе повідомлення про помилку і встановить рівень сумісності, який є типовим для поточної версії оболонки. Підмножину коректних рівнів сумісності описано нижче у розділі .SM \fBBРЕЖИМ СУМІСНОСТІ ОБОЛОНКИ\fP. Наприклад, 4.2 і 42 є коректними значеннями, які відповідають параметру \fBcompat42\fP команди \fBshopt\fP і встановлюють рівень сумісності 42. Коректним значенням також є номер поточної версії оболонки. .TP \fBBASH_ENV\fP Якщо встановлено значення цього параметра, коли \fBbash\fP виконує скрипт оболонки, це розгорнуте значення буде оброблено як назву файла, який містить команди для ініціалізації оболонки, до того, як прочитає і виконає команди зі скрипту. Значення .SM \fBBASH_ENV\fP буде оброблено із розгортанням параметрів, заміною команд та арифметичними обчисленнями, перш ніж його буде використано як назву файла. Для пошуку потрібного файла не буде використано змінну .SM \fBPATH\fP. .TP \fBBASH_XTRACEFD\fP Якщо встановлено значення цілого числа, яке відповідає коректному дескриптору файла, \fBbash\fP запише створені під час виконання дані трасування, якщо увімкнено .Q "set \-x" для цього дескриптора файла, замість стандартного запису помилок. Дескриптор файла буде закрито у відповідь на скасування встановлення значення .SM \fBBASH_XTRACEFD\fP або встановлення нового значення для цієї змінної. Якщо значення .SM \fBBASH_XTRACEFD\fP не встановлено або встановлено значення порожнього рядка, дані трасування буде надіслано до стандартного виведення помилок. Зауважте, що встановлення для .SM \fBBASH_XTRACEFD\fP значення 2 (дескриптор файла стандартного виведення помилок) з наступним скасуванням встановлення значення призведе до закриття стандартного виведення помилок. .TP \fBCDPATH\fP Шлях пошуку для команди \fBcd\fP. Це список записів каталогів, які відокремлено двокрапками, у якому оболонка шукатиме каталоги, які вказано як аргументи команди \fBcd\fP. Зразок значення: .Q .:\*~:/usr . .TP \fBCHILD_MAX\fP Встановити кількість значень стану завершених дочірніх процесів, які має зберігати оболонка. \fBBash\fP забороняє зменшення цього значення до рівня, який є нижчим за обов'язковий мінімум .SM POSIX . Передбачено також максимальне значення (у поточній версії 8192), яке теж не можна перевищувати. Мінімальне значення залежить від системи. .TP \fBCOLUMNS\fP Використовується у складеній команді \fBselect\fP для визначення ширини термінала при виведенні списків вибору. Буде встановлено автоматично, якщо увімкнено параметр \fBcheckwinsize\fP або в інтерактивній оболонці при отриманні .SM \fBSIGWINCH\fP. .TP \fBCOMPREPLY\fP Змінна\-масив, з якої \fBbash\fP читає можливі доповнення, створені функцією оболонки, яку викликано можливостями програмованого доповнення (див. \fBПрограмоване доповнення\fP нижче). У кожному з елементів масиву міститься можливий варіант доповнення. .TP \fBEMACS\fP Якщо \fBbash\fP виявить цю змінну у середовищі, коли оболонку буде запущено зі значенням .Q t , програма припускатиме, що оболонку запущено у режимі буфера оболонки Emacs, і вимкне редагування рядка. .TP \fBENV\fP Розгортається і виконується подібно до .SM \fBBASH_ENV\fP (див. .SM \fBВИКЛИК\fP вище) при виклику інтерактивної оболонки у режимі posix. .TP \fBEXECIGNORE\fP Список відокремлених двокрапками взірців оболонки (див. \fBВідповідність за взірцем\fP), який визначає список назв файлів, які буде проігноровано при пошуку команди із використанням .SM \fBPATH\fP. Файли, назви яких збігатимуться з одним із цих взірців не вважатимуться виконуваними у списку доповнення і виконання команд при пошуку у каталогах .SM \fBPATH\fP. Це не стосуватиметься поведінки команд \fB[\fP, \fBtest\fP і \fB[[\fP. Використання .SM \fBEXECIGNORE\fP не стосується повних шляхів до файлів у таблиці хешів команд. Цією змінною можна скористатися для ігнорування файлів бібліотек спільного використання, для яких встановлено біт виконання, але які не є виконуваними файлами. При встановленні відповідності взірцю буде враховано значення параметра оболонки \fBextglob\fP. .TP \fBFCEDIT\fP Типовий редактор для вбудованої команди \fBfc\fP. .TP \fBFIGNORE\fP Список відокремлених двокрапками суфіксів, які слід ігнорувати під час автоматичного доповнення назв файлів (див. .SM \fBREADLINE\fP нижче). Назви файлів, чиї суфікси збігаються із одним із записів у .SM \fBFIGNORE\fP, буде виключено зі списку відповідних назв файлів. Зразок значення .Q .o:\*~ . .TP \fBFUNCNEST\fP Якщо встановлено числове додатне значення, визначає максимальний рівень вкладеності функцій. Виклики функцій, у яких перевищено рівень вкладеності, призводять до аварійного завершення виконання поточної команди. .TP \fBGLOBIGNORE\fP Список відокремлених двокрапками взірців, який визначає набір назв файлів, які буде проігноровано при розгортанні шляхів. Якщо назва файла відповідає взірцю розгортання шляху також відповідає одному із взірців у .SM \fBGLOBIGNORE\fP, її буде вилучено зі списку відповідників. Зіставлення зі зразком враховує значення параметра оболонки \fBextglob\fP. .TP \fBGLOBSORT\fP .PD Керує сортуванням результатів розгортання шляхів. Значення цієї змінної визначає критерії упорядковування та порядок результатів розгортання шляху. Якщо ця змінна не встановлена ​​або має значення порожнього рядка, розкриття шляху використовує історичну поведінку упорядкування за назвою у лексикографічному порядку за зростанням, визначеному змінною оболонки .SM \fB\%LC_COLLATE\fP. .IP Якщо встановлено, коректне значення починається з необов'язкового символу \fI+\fP, який буде проігноровано, або \fI\-\fP, символу який змінює впорядкування за зростанням на впорядкування за спаданням, після чого має бути вказано специфікатор сортування. Коректні специфікатори упорядкування: \fIname\fP, \fI\%numeric\fP, \fIsize\fP, \fImtime\fP, \fIatime\fP, \fIctime\fP і \fIblocks\fP, які впорядковують файли за назвою, назвою у числовому, а не в лексикографічному порядку, розміром файла, часом внесення змін, часом доступу, часом зміни inode та кількістю блоків відповідно. Якщо будь\-які з ключів, що не є назвою, порівнюються на рівність (наприклад, якщо два файли однакового розміру), упорядковування використовує назву як вторинний ключ сортування. .IP Наприклад, значення \fI\-mtime\fP упорядковує результати за спаданням за часом внесення змін (спочатку найновіші). .IP Специфікатор \fInumeric\fP призводить до обробки назв, що складаються виключно з цифр, як числа та упорядкування їх за числовим значенням (тому, наприклад, .Q 2 з'явиться у списку перед .Q 10 , ). При використанні \fInumeric\fP, назви, що містять нецифрові елементи, з'являться у списку після всіх назв, що складаються виключно з цифр, і будуть упорядковані за назвою з використанням традиційної поведінки. .IP Специфікатор упорядковування \fInosort\fP повністю вимикає упорядковування; \fBbash\fP повертає результати у порядку їх зчитування з файлової системи, ігноруючи будь\-які початкові символи \fI\-\fP. .IP Якщо специфікатор упорядковування не вказано, типово буде використано \fIname\fP, тому значення \fI+\fP еквівалентне порожньому рядку, а значення \fI\-\fP упорядковує за назвою у порядку спадання. Будь\-яке недійсне значення відновлює давню поведінку упорядковування. .PD 0 .TP \fBHISTCONTROL\fP Список відокремлених двокрапками значень, які визначають спосіб збереження команд у списку журналу. Якщо до списку значень включено \fIignorespace\fP, рядки, які починаються з символу \fBпробілу\fP не буде збережено у списку журналу. Значення \fIignoredups\fP призведе до того, що рядки, які збігаються із попереднім записом у журналі, не буде збережено. Значення \fIignoreboth\fP є скороченням для поєднання \fIignorespace\fP і \fIignoredups\fP. Значення \fIerasedups\fP призведе до того, що усі попередні рядки, які збігаються із поточним рядком буде вилучено зі списку журналу перед збереженням у ньому поточного рядка. Усі інші значення, окрім описаних вище, буде проігноровано. Якщо не встановлено значення .SM \fBHISTCONTROL\fP або у встановленому значенні немає коректних записів, обробник читатиме і зберігатиме у списку журналу усі рядки, які узгоджуються зі значенням .SM \fBHISTIGNORE\fP. Другий і наступні рядки багаторядкових складених команд не перевірятимуться, їх буде додано до журналу без врахування значення .SM \fBHISTCONTROL\fP. Якщо перший рядок багаторядкової складеної команди було збережено, другий та наступні рядки не перевірятимуться і додаватимуться до журналу незалежно від значення .SM \fBHISTCONTROL\fP. Якщо перший рядок не було збережено, другий та наступні рядки команди також не зберігатимуться. .TP \fBHISTFILE\fP The name of the file in which command history is saved (see .SM \fBHISTORY\fP below). \fBBash\fP assigns a default value of .FN \*~/.bash_history . If .SM \fBHISTFILE\fP is unset or null, the shell does not save the command history when it exits. .TP \fBHISTFILESIZE\fP Максимальна кількість рядків, які можуть міститися у файлі журналу. Якщо цій змінній надано значення, файл журналу буде обрізано, якщо це потрібно, так, щоб у ньому містилося не більше кількість записів журналу, загальна кількість яких не перевищує вказаної кількості рядків — буде вилучено найстаріші записи. Якщо у списку журналу містяться багаторядкові записи, файл журналу може містити більше рядків, ніж це максимальне значенням, щоб уникнути появі часткових записів журналу. Файл журналу також буде обрізано до цього розміру після запису до нього під час виходу з оболонки або використання вбудованої команди \fB\%history\fP. Якщо значенням змінної є 0, файл журналу буде обрізано до нульового розміру. Нечислові значення або від'ємні числові значення призводять до заборони обрізання. Оболонка встановлює типове значення за значенням .SM \fBHISTSIZE\fP після читання усіх файлів запуску оболонки. .TP \fBHISTIGNORE\fP Список взірців, відокремлених двокрапками, який використовується для визначення того, які рядки команд слід зберігати в списку журналу. Якщо рядок команди відповідає одному із взірців у значенні .SM \fBHISTIGNORE\fP, його не буде збережено у списку журналу. Кожен взірець буде прив'язано початку рядка, він має відповідати усьому рядку (\fBbash\fP неявно не додає .Q \fB*\fP ). Перевірка відповідності кожного взірця буде виконуватися для рядка після застосування перевірок, визначених .SM \fBHISTCONTROL\fP. Окрім звичайних символів взірців відповідності оболонки, .Q \fB&\fP відповідає попередньому рядку у журналі. Символ зворотної похилої риси екранує .Q \fB&\fP ; зворотну похилу риску до встановлення відповідності буде вилучено. Якщо перший рядок багаторядкової складеної команди було збережено, програма не буде перевіряти другий та наступні рядки і додаватиму їх до журналу незалежно від значення .SM \fBHISTIGNORE\fP. Якщо перший рядок не було збережено, другий та наступні рядки команди також не зберігатимуться. При встановленні відповідності із взірцем буде враховано параметр оболонки \fB\%extglob\fP. .IP .SM \fBHISTIGNORE\fP перебирає деякі функції .SM \fBHISTCONTROL\fP. Взірець .Q & тотожний до .Q \%ignoredups , , а взірець .Q "[ ]*" тотожний до .Q \%ignorespace . Поєднуючи ці два взірці, з розділенням їх двокрапкою, маємо результат .Q \%ignoreboth . .TP \fBHISTSIZE\fP Кількість команд, які слід зберігати у журналі команд (див. .SM \fBЖУРНАЛ\fP нижче). Якщо значенням є 0, збереження команд до списку команд не виконуватиметься. Якщо значення є від'ємним, до списку журналу зберігатимуться усі команди (без обмежень на кількість). Після читання файлів запуску оболонка встановлює типове значення 500. .TP \fBHISTTIMEFORMAT\fP Якщо ця змінна встановлена і її значення не порожнє (null), воно використовується як рядок форматування \fIstrftime\fP(3) щоб надрукувати позначку часу, пов’язану з кожним записом журналу, що виводиться вбудованою командою \fBhistory\fP. Якщо ця змінна встановлена, мітки часу записуються до файлу журналу, щоб вони могли зберігатися протягом сеансів оболонки. Щоб відрізнити позначки часу від інших рядків журналу, використовується символ коментаря журналу. .TP \fBHOME\fP Домашній каталог поточного користувача; типовий аргумент для вбудованої команди \fBcd\fP. Значення цієї змінної також використовується при розгортанні записів із тильдою. .TP \fBHOSTFILE\fP Contains the name of a file in the same format as .FN /etc/hosts that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell is running; the next time hostname completion is attempted after the value is changed, \fBbash\fP adds the contents of the new file to the existing list. If .SM \fBHOSTFILE\fP is set, but has no value, or does not name a readable file, \fBbash\fP attempts to read .FN /etc/hosts to obtain the list of possible hostname completions. When .SM \fBHOSTFILE\fP is unset, \fBbash\fP clears the hostname list. .TP \fBIFS\fP \fIВнутрішній роздільник полів\fP (\fIInternal Field Separator\fP), який буде використано для поділу тексту на слова після розгортання і для поділу рядків на слова за допомогою вбудованої команди \fBread\fP. Поділ на слова описано у розділі .SM \fBРОЗГОРТАННЯ\fP. Типовим значенням є .Q . .TP \fBIGNOREEOF\fP Визначає дію інтерактивної оболонки у відповідь на отримання символу .SM \fBEOF\fP як єдиного елемента вхідних даних. Якщо встановлено значення, воно вважатиметься кількістю послідовних символів .SM \fBEOF\fP, які має бути введено як перші символи рядків вхідних даних, перш ніж \fBbash\fP завершить роботу. Якщо змінну встановлено, але вона не має числового значення або значення є порожнім, буде використано типове значення 10. Якщо значення змінної не встановлено, для оболонки .SM \fBEOF\fP буде кінцем введення. .TP \fBINPUTRC\fP The filename for the \fBreadline\fP startup file, overriding the default of .FN \*~/.inputrc (see .SM \fBREADLINE\fP below). .TP \fBINSIDE_EMACS\fP Якщо у середовищі є ця змінна на момент запуску оболонки, \fBbash\fP припускає, що програму запущено всередині буфера оболонки і може вимкнути редагування рядків, залежно від значення змінної .SM \fBTERM\fP. .TP \fBLANG\fP Використовується для визначення категорії локалі для усіх категорій, які не було окремо вибрано за допомогою змінної, назва якої починається з \fBLC_\fP. .TP \fBLC_ALL\fP Значення цієї змінної має вищий пріоритет за значення .SM \fBLANG\fP та будь\-якої іншої змінної \fBLC_\fP, яка визначає категорію локалі. .TP \fBLC_COLLATE\fP Ця змінна визначає порядок сортування, який буде використано при упорядковуванні результатів розгортання шляхів до файлів, та визначає поведінку при розгортанні діапазонів, класів еквівалентності та схем упорядковування при розгортанні шляхів та встановленні відповідності за взірцем. .TP \fBLC_CTYPE\fP Ця змінна визначає спосіб обробки символів та поведінку класів символів при розгортанні шляхів до файлів та встановленні відповідності за взірцем. .TP \fBLC_MESSAGES\fP Ця змінна визначає локаль, яку буде використано для трансляції рядків у подвійних лапках, яким передує символ \fB$\fP. .TP \fBLC_NUMERIC\fP Ця змінна визначає категорію локалей, яку буде використано для форматування чисел. .TP \fBLC_TIME\fP Ця змінна визначає категорію локалей, яку буде використано для форматування записів дати і часу. .TP \fBLINES\fP Використовується у складеній команді \fBselect\fP для визначення довжини стовпчика при виведенні списків вибору. Буде встановлено автоматично, якщо увімкнено параметр \fBcheckwinsize\fP або в інтерактивній оболонці при отриманні .SM \fBSIGWINCH\fP. .TP \fBMAIL\fP Якщо значенням встановлено значення назви файла або каталогу, і не встановлено значення змінної .SM \fBMAILPATH\fP, \fBbash\fP повідомлятиме користувачеві про надходження пошти до вказаного файла або каталогу у форматі Maildir. .TP \fBMAILCHECK\fP Визначає наскільки часто (у секундах) \fBbash\fP має перевіряти пошту. Типовим значенням є 60 секунд. Коли настане момент перевірити пошту, оболонка виконає відповідні дії до показу основного запиту. Якщо значення цієї змінної не встановлено або встановлено значення, яке не є додатним або нульовим, оболонка вимкне перевірку пошти. .TP \fBMAILPATH\fP Список відокремлених двокрапками назв файлів, у яких слід шукати пошту. Повідомлення, яке буде виведено при надходженні пошти до певного файла, можна вказати, відокремивши назву файла від повідомлення за допомогою .Q ? . Якщо використати \fB$_\fP у тексті повідомлення, змінну буде розгорнуто до назви поточного поштового файла. Приклад: .RS .PP .EX \fBMAILPATH\fP=\*'/var/mail/bfox?\*"You have mail\*":\*~/shell\-mail?\*"$_ has mail!\*"\*' .EE .PP \fBBash\fP можна налаштувати на надання типового значення для цієї змінної (стандартного значення не передбачено), але розташування файлів пошти користувача, яке використовуватиме оболонка, залежить від системи (наприклад, /var/mail/\fB$USER\fP). .RE .TP \fBOPTERR\fP Якщо встановлено значення 1, \fBbash\fP виводитиме повідомлення про помилки, які створено вбудованою командою \fBgetopts\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .SM \fBOPTERR\fP буде ініціалізовано значенням 1 кожного разу, коли викликатиметься оболонка або виконуватиметься скрипт оболонки. .TP \fBPATH\fP Шлях пошуку для команд. Це список відокремлених двокрапками записів каталогів, у яких оболонка шукатиме команди (див. .SM \fBВИКОНАННЯ КОМАНД\fP нижче). Назва каталогу нульової довжини (null) у значенні .SM \fBPATH\fP позначає поточний каталог. Порожня назва каталогу може з'являтися як два сусідніх стовпчики або початковий чи кінцевий стовпчик. Типовий шлях залежить від системи і визначається адміністратором, який встановив \fBbash\fP. Стандартним значенням є .RS .RS 5n .EX /usr/local/bin:/usr/local/sbin:.if \n(LL<78n .br /usr/bin:/usr/sbin:/bin:/sbin .EE .RE .RE .TP \fBPOSIXLY_CORRECT\fP Якщо ця змінна є частиною середовища на момент запуску \fBbash\fP, оболонка перейде у режим posix до читання файлів запуску, так, наче було вказано параметр виклику \fB\-\-posix\fP. Якщо встановити значення змінної під час роботи оболонки, \fBbash\fP увімкне режим posix так, наче було виконано команду .Q "set \-o posix" Коли оболонка переходить у режим posix, вона встановлює значення для цієї змінної, якщо це значення ще не було встановлено. .TP \fBPROMPT_COMMAND\fP Якщо встановлено значення цієї змінної, і цим значенням є масив, о показу кожного з основних запитів буде виконано значення кожного із елементів масиву. Якщо значення встановлено, але воно не є масивом, це значення буде використано як команду, яку слід виконати. .TP \fBPROMPT_DIRTRIM\fP Якщо встановлено додатне значення, це значення буде використано як кількість кінцевих компонентів запису каталогу, які слід зберегти при розгортанні екранованих послідовностей запитів \fB\ew\fP і \fB\eW\fP (див. .SM \fBЗАПИТИ\fP нижче). Вилучені символи буде замінено трьома крапками. .TP \fBPS0\fP Значення цього параметра буде розгорнуто (див. .SM \fBЗАПИТИ\fP нижче) і виведено інтерактивними оболонками після читання команди і перед її виконанням. .TP \fBPS1\fP Значення цього параметра розгортається (див. .SM \fBЗАПИТИ\fP нижче) і використовується як основний рядок запиту. Типове значення — .Q \es\-\ev\e$\ . .TP \fBPS2\fP Значення цього параметра розгортається, як з .SM \fBPS1\fP, і використовується як вторинний рядок запиту. Типове значення — .Q >\ . .TP \fBPS3\fP Значення цього параметра використовується як запит для команди \fBselect\fP (див. .SM \fBГРАМАТИКА ОБОЛОНКИ\fP вище). .TP \fBPS4\fP Значення цього параметра буде розгорнуто, як і .SM \fBPS1\fP, а значення буде виведено перед кожною командою, яку \fBbash\fP виведе під час виконання. Перший символ розгорнутого значення .SM \fBPS4\fP, за потреби, буде відтворено декілька разів для позначення декількох рівнів опосередкованості. Типовим значенням є .Q +\ . .TP \fBSHELL\fP Ця змінна розгортається до повного шляху до оболонки. Якщо не встановлено під час запуску оболонки, \fBbash\fP встановлює для неї значення повного шляху до оболонки входу до системи поточного користувача. .TP \fBTIMEFORMAT\fP Значення цього параметра використовується як рядок формату, що визначає, як слід показувати інформацію про час для конвеєрів із префіксом \fBtime\fP. Символ \fB%\fP розпочинає escape\-послідовність, яка розширюється до значення часу або іншої інформації. Escape\-послідовності та їх значення такі; дужки позначають необов'язкові частини. .PP .RS .PD 0 .TP 10 \fB%%\fP Символ \fB%\fP. .TP \fB%[\fP\fIp\fP\fB][l]R\fP Тривалість виконання у секундах. .TP \fB%[\fP\fIp\fP\fB][l]U\fP Кількість секунд, протягом яких процесор було задіяно у режимі користувача. .TP \fB%[\fP\fIp\fP\fB][l]S\fP Кількість секунд, протягом яких процесор було задіяно у режимі системи. .TP \fB%P\fP Частка часу процесора, яку обчислено за формулою (%U + %S) / %R. .PD .RE .IP Необов'язкове \fIp\fP є цифрою, яка визначає \fIточність\fP, кількість цифр дробової частини після десяткової крапки. Значення 0 означає, що не слід виводити ні крапку, ні дробову частину. \fBtime\fP виводить не більше шести цифр після десяткової крапки; значення \fIp\fP, які є більшим за 6, буде просто замінено на 6. Якщо \fIp\fP не вказано, \fBprecision\fP виведе три цифри після десяткової крапки. .IP Необов'язкове \fBl\fP визначає довгий формат, включено із хвилинами, форми \fIMM\fPm\fISS\fP.\fIFF\fPs. Значення \fIp\fP визначає, чи слід включати дробову частину. .IP Якщо значення цієї змінної не встановлено, \fBbash\fP працюватиме так, наче вона має значення \fB$\*'\enreal\et%3lR\enuser\et%3lU\ensys\et%3lS\*'\fP. Якщо значення є порожнім, дані щодо часу виведено не буде. При виведенні рядка форматування буде додано кінцевий символ нового рядка. .PD 0 .TP \fBTMOUT\fP Якщо встановлено додатне значення, вбудована команда \fBread\fP використає значення, як типовий час очікування. Команда \fBselect\fP завершить роботу, якщо вхідні дані не буде отримано протягом .SM \fBTMOUT\fP секунд, якщо вхідні дані надходять з термінала. В інтерактивній оболонці значення буде використано як кількість секунд, протягом яких слід очікувати на рядок вхідних даних після показу основного запиту. \fBBash\fP завершить роботу після очікування протягом вказаної кількості секунд, якщо не буде отримано повного рядка вхідних даних. .TP \fBTMPDIR\fP Якщо встановлено, \fBbash\fP використовує значення як назву каталогу, у якому \fBbash\fP створює тимчасові файли для використання в оболонці. .TP \fBauto_resume\fP Ця змінна керує тим, як оболонка взаємодіє із користувачем і керуванням завданнями. Якщо встановлено значення цієї змінної, прості команди, які складаються лише з одного слова, без переспрямувань вважатимуться кандидатами на відновлення наявного зупиненого завдання. Двозначність заборонено: якщо існує декілька завдань, записи яких починаються із введеного слова або його містять, буде вибрано завдання, доступ до якого було здійснено останнім. \fIНазва\fP зупиненого завдання у цьому контексті є рядком команди, яку використано для його запуску, як її було б показано командою \fBjobs\fP. Якщо встановлено значення \fIexact\fP, слово має відповідати назві зупиненого завдання точно; якщо встановлено значення \fIsubstring\fP, визначений рядок має збігатися із підрядком у назві зупиненого завдання. Значення \fIsubstring\fP працює подібно до ідентифікатора завдання \fB%?\fP (див. .SM \fBКЕРУВАННЯ ЗАВДАННЯМИ\fP нижче). Якщо встановлено будь\-яке інше значення (наприклад, \fIprefix\fP), слово має бути префіксом назви зупиненого завдання; це працює подібно до ідентифікатора завдання \fB%\fP\fIрядок\fP. .TP \fBhistchars\fP Два або три символи, які керують доповненням за журналом, швидким підставлянням та токенізацією (див. .SM \fBДОПОВНЕННЯ ЗА ЖУРНАЛОМ\fP нижче). Перший символ — це символ \fIдоповнення за журналом\fP, символ, який зазвичай починає доповнення за журналом .Q \fB!\fP . Другий символ є символом \fIшвидкого підставляння\fP, зазвичай .Q \fB\*^\fP . Коли він з'являється як перший символ у рядку, підставляння у журналі повторює попередню команду, замінюючи один рядок іншим. Необов'язковий третій символ — це символ \fIкоментаря у журналі\fP, зазвичай .Q \fB#\fP , , що вказує на те, що решта рядка є коментарем, коли цей символ з'являється як перший символ слова. Символ коментаря у журналі вимикає підставляння у журналі для решти слів у рядку. Це не обов'язково призводить до того, що синтаксичний аналізатор оболонки оброблятиме решту рядка як коментар. .PD .SS Масиви У \fBbash\fP передбачено одновимірні індексовані та асоціативні змінні\-масиви. Як індексований масив можна використати будь\-яку змінну. Масив явним чином оголошується вбудованою командою \fBdeclare\fP. Обмеження на максимальний розмір масиву не передбачено, як і вимоги, щоб усі елементи було індексовано або асоційовано неперервно. Посилання на елементи індексованих масивів здійснюється за допомогою арифметичних виразів, які мають розгортатися до цілого числа (див. .SM \fBАРИФМЕТИЧНЕ ОЦІНЮВАННЯ\fP нижче). Нумерація починається з нуля. Посилання на елементи асоціативних масивів здійснюється з використанням довільних рядків. Якщо це явно не визначено, індекси в індексованому масиві мають бути невід'ємними цілими числами. .PP Оболонка виконує розгортання параметрів і змінних, арифметичне розгортання, підставляння команд і вилучення лапок для підписів індексованих масивів. Оскільки це потенційно може призвести до порожніх рядків, механізм індексування підписів розглядає їх як вирази, що дорівнюють 0. .PP Оболонка виконує розгортання тильди, розгортання параметрів та змінних, арифметичне розгортання, підставляння команд і вилучення лапок для підписів асоціативного масиву. Порожні рядки не можна використовувати як ключі асоціативного масиву. .PP \fBBash\fP автоматично створює упорядкований масив, якщо будь\-якій змінній надано значення з використанням синтаксису .RS \fIназва\fP[\fIпідпис\fP]=\fIзначення\fP \&. .RE Значення \fIпідпис\fP буде оброблено як арифметичний вираз, результатом обчислення якого має бути число, яке є більшим за нуль або рівним нулеві. Щоб явним чином оголосити індексований масив, скористайтеся командою .RS \fBdeclare \-a\ \fP\fIназва\fP .RE (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .RS \fBdeclare \-a\fP \fIназва\fP[\fIпідпис\fP] .RE також можна скористатися командою; \fIпідпис\fP буде проігноровано. .PP Асоціативні масиви створюють через .RS \fBdeclare \-A\ \fP\fIназва\fP .RE \&. .PP Атрибути змінної\-масиву можна вказати за допомогою вбудованих команд \fB\%declare\fP і \fB\%readonly\fP. Кожен атрибут застосовується до усіх елементів масиву. .PP Надати масиву значення можна за допомогою складених синтаксичних конструкцій встановлення значень у формі \fIназва\fP=\fB(\fPзначення\fI1\fP .\|.\|.\& значення\fIn\fP\fB)\fP, де кожне \fIзначення\fP можна вказувати у формі [\fIпідпис\fP]=\fIрядок\fP. Для індексованих масивів достатньо вказати лише \fIрядок\fP. Кожне \fIзначення\fP у списку розгортається з використанням усіх розгортань в оболонці, які описано нижче у розділі .SM \fBРОЗГОРТАННЯ\fP, але \fIзначення\fP, які є справжніми наданнями значень змінним, включно з дужками і підписами, не підлягають розгортанню дужок та розбиттю на слова, як це відбувається у випадку надання значення окремим змінним. .PP При встановленні значення у індексованих масивах, якщо вказано необов'язкові дужки і підпис, значення буде надано елементу з відповідним індексом. Якщо підпис не буде вказано, індексом елемента, якому буде надано значення, буде індекс останнього елемента, якому було надано значення якоюсь інструкцією, плюс один. Нумерація елементів масиву починається з нуля. .PP При встановленні значень асоціативного масиву словами у складеній інструкції надання значення можуть бути або інструкції надання значень, для яких потрібен підпис елемента, або список слів, які буде оброблено як послідовність альтернативних ключів та значень: \fIназва\fP=\fB( \fP\fIключ1 значення1 ключ2 значення2\fP .\|.\|.\&\fB)\fP. Результат обробки цих слів буде таким самим, як для \fIназва\fP=\fB(\fP [\fIключ1\fP]=\fIзначення1\fP [\fIключ2\fP]=\fIзначення2\fP .\|.\|.\&\fB)\fP. Перше слово у списку визначає, як оброблятимуться інші слова; усі інструкції надання значень у списку мають належати до одного типу. Якщо використовуватимуться пари ключ/значення, ключі не можна пропускати, вони не можуть бути порожніми; останнє пропущене значення буде оброблено як порожній рядок. .PP Таку синтаксичну конструкцію також приймає вбудована команда \fBdeclare\fP. Значення окремих елементів масиву можна вказати за допомогою синтаксичної конструкції \fIназва\fP[\fIпідпис\fP]=\fIзначення\fP, впровадженої вище. .PP При наданні значення в індексованому масиві, якщо параметру \fIназва\fP передано від'ємний індекс, для визначення індексу елемента це число буде додано до числа, яке на одиницю більше максимального індексу у масиві \fIназва\fP. Отже, від'ємні індекси відраховуватимуться від кінця масиву, а індекс \-1 є індексом останнього елемента масиву. .PP Оператор .Q += допише змінну до масиву змінних при наданні значення за допомогою синтаксису складеного надання значень; див. .SM \fBПАРАМЕТРИ\fP вище. .PP Доступ до будь\-якого елемента масиву можна отримати за допомогою синтаксичної конструкції ${\fIназва\fP[\fIпідпис\fP]}. Фігурні дужки є обов'язковими для уникнення конфліктів з розгортанням шляхів до файлів. Якщо \fIпідписом\fP є \fB@\fP або \fB*\fP, слово буде розгорнуто до усіх елементів масиву \fIназва\fP, якщо протилежне не вказано в описі вбудованої команди або розгортання слова. Ці два підписи працюють по\-різному, лише якщо слово взято у подвійні лапки. Якщо слово взято у подвійні лапки, ${\fIназва\fP[*]} розгортається до одинарного слова зі значенням усіх елементів масиву, які відокремлено один від одного першим символом спеціальної змінної .SM \fBIFS\fP, а ${\fIназва\fP[@]} розгортає кожен елемент масиву \fIназва\fP в окреме слово. Якщо у масиві немає елементів, ${\fIназва\fP[@]} розгортається у порожнє значення. Якщо всередині слова відбувається розгортання у подвійних лапках, результат розгортання першого параметра буде об'єднано із початковою частиною початкового слова, а розгортання останнього параметра буде об'єднано із останньою частиною початкового слова. Така процедура є подібною до розгортання спеціальних параметрів \fB*\fP і \fB@\fP (див. \fBСпеціальні параметри\fP вище). .PP ${#\fIназва\fP[\fIпідпис\fP]} розгортається до довжини ${\fIназва\fP[\fIпідпис\fP]}. Якщо \fIпідписом\fP є \fB*\fP або \fB@\fP, розгортанням є кількість елементів у масиві. .PP Якщо результатом обчислення \fIпідпису\fP, що використовується для посилання на елемент індексованого масиву, є число менше нуля, його буде оброблено як число, більше за максимальний індекс масиву, тому від'ємні індекси відраховуються з кінця масиву, а індекс \-1 посилається на останній елемент. .PP Посилання на змінну\-масив без визначення підпису є еквівалентним до посилання на елемент масиву із підписом 0. Можна використовувати будь\-які посилання на змінну\-масив із коректним підписом. Якщо потрібно, \fBbash\fP автоматично створить відповідний масив. .PP Значення змінної\-масиву вважається встановленим, якщо підпису змінної надано значення. Коректним значенням може бути і порожній рядок. .PP Можна отримати ключі (індекси) масиву, а також значення. ${\fB!\fP\fIназва\fP[\fI@\fP]} і ${\fB!\fP\fIназва\fP[\fI*\fP]} розгортаються до індексів, які призначено у змінній\-масиві \fIназва\fP. Обробка у подвійних лапках є подібною до розгортання спеціальних параметрів \fI@\fP і \fI*\fP у подвійних лапках. .PP Для знищення масивів використовують вбудовану команду \fBunset\fP. Команда \fBunset\fP \fIназва\fP[\fIпідпис\fP] скасовує встановлення елемент масиву з індексом \fIпідпис\fP, як для індексованих, так і для асоційованих масивів. Від'ємні значення підписів буде оброблено в описаний вище спосіб. Скасування встановлення останнього елемента у змінній\-масиві не скасовує встановлення змінної. Команда \fBunset\fP \fIназва\fP, де \fIназва\fP є назвою масиву, вилучає увесь масив. \fBunset\fP \fIназва\fP[\fIпідпис\fP], де \fIпідпис\fPом є \fB*\fP або \fB@\fP, поводиться по\-різному, залежно від того, є \fIназва\fP індексованим чи асоціативним масивом, якщо \fIпідпис\fPом є \fB*\fP або \fB@\fP. Якщо \fIназва\fP є асоціативним масивом, команда скасовує встановлення елемента із підписом \fB*\fP або \fB@\fP. Якщо \fIназва\fP є індексованим масивом, unset вилучає усі елементи, але не вилучає сам масив. .PP При використанні назви змінної із підписом як аргументу команди, так само, як із \fBunset\fP, без використання синтаксису розгортання слів, описаного вище (наприклад, unset a[4]), аргумент підлягатиме розгортанню шляхів до файлів. Якщо розгортання шляхів до файлів є небажаним, аргумент слід взяти у лапки (приклад: unset \*'a[4]\*'). .PP Вбудовані команди \fBdeclare\fP, \fBlocal\fP та \fBreadonly\fP приймають параметр \fB\-a\fP для визначення індексованого масиву та параметр \fB\-A\fP для визначення асоціативного масиву. Якщо вказано обидва параметри, пріоритет має параметр \fB\-A\fP. Вбудована команда \fBread\fP приймає параметр \fB\-a\fP для призначення списку слів, які прочитано зі стандартного джерела вхідних даних, до масиву. Вбудовані команди \fBset\fP і \fBdeclare\fP показують значення масиву у спосіб, яким можна скористатися для встановлення значень нового масиву. Інші вбудовані команди також приймають аргументи назв масивів (наприклад, \fBmapfile\fP); див. описи окремих вбудованих команд нижче, щоб дізнатися більше. Оболонка надає низку вбудованих змінних\-масивів. .SH РОЗГОРТАННЯ Розгортання буде виконано у рядку команди після того, як його буде поділено на слова. Оболонка виконує такі розгортання: \fIрозгортання у дужках\fP, \fIрозгортання тильди\fP, \fIрозгортання параметрів та змінних\fP, \fIпідстановка команд\fP, \fIарифметичне розгортання\fP, \fIподіл на слова\fP, \fIрозгортання шляхів\fP і \fIвилучення лапок\fP. .PP Порядок розгортань є таким: розгортання у дужках; розгортання тильди, розгортання параметрів і змінних, арифметичні обчислення і заміна команд (буде виконано зліва праворуч); поділ на слова; розгортання шляхів і вилучення лапок. .PP У системах, де передбачено відповідну підтримку, доступним є ще одне розгортання: \fIзаміна процесу\fP. Це розгортання буде виконано одночасно із розгортанням тильди, розгортанням параметрів і змінних, арифметичними обчисленнями і заміною команд. .PP \fIВилучення лапок\fP завжди виконується останнім. Воно вилучає символи лапок у початковому слові, а не ті, що є результатом одного з інших розгортань, якщо тільки їх самих не було взято у лапки. .PP .\" keep leading \& for AT&T troff .\" .BR + \& + \*" doesn't work with AT&T troff Збільшити кількість слів у розгортанні можуть лише розгортання у дужках, поділ на слова і розгортання шляху; інші розгортання розгортають одинарне слово у одинарне слово. Єдиним виключенням є розгортання \fB\&\*"$@\*"\fP і \fB\&\*"${\fP\fIназва\fP\fB[@]}\*"\fP\fB\&\fP, а також, здебільшого, \fB$*\fP та \fB${\fP\fIназва\fP\fB[*]}\fP, як це описано вище (див. .SM \fBПАРАМЕТРИ\fP). .SS "Розгортання у дужках" \fIРозгортання у дужках\fP є механізмом створення довільних рядків зі спільним префіксом і суфіксом, кожен з яких може бути порожнім. Цей механізм подібний до \fIрозгортання шляхів\fP, але породжені назви файлів можуть бути і назвами файлів, які не існують. Взірці, які буде оброблено розгортанням у дужках, складаються з необов'язкової \fIвступної частини\fP, за якою має бути вказано або послідовність відокремлених комами рядків, або послідовність виразів у парі фігурних дужок, яку завершує необов'язкова \fIкінцева частина\fP. Вступну частину буде дописано перед кожним рядком у фігурних дужках, а потім до кожного з результатів буде дописано кінцеву частину. Розгортання відбувається зліва праворуч. .PP Розгортання у дужках може бути вкладеним. Результати розгортання кожного рядка не упорядковуються; розгортання у дужках зберігає порядок зліва праворуч. Приклад: a\fB{\fPd,c,b\fB}\fPe буде розгорнуто до .Q "ade ace abe" . .PP Вираз послідовності має форму \fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIкрок\fP\fB]\fP, де \fIx\fP і \fIy\fP є або цілими числами або одинарними літерами, а \fIкрок\fP, необов'язковий крок у послідовності, є цілим числом. Якщо вказано цілі числа, вираз розгортається до кожного цілого числа від \fIx\fP до \fIy\fP, включно. Якщо \fIx\fP або \fIy\fP починається з нуля, усі елементи створеної послідовності складатимуться з однакової кількості цифр, дописавши нуль там, де це потрібно. Якщо вказано літери, вираз буде розгорнуто до кожного символу, який лексикографічно потрапляє у діапазон від \fIx\fP до \fIy\fP, включно, з використанням локалі C. Зауважте, що \fIx\fP і \fIy\fP мають належати до одного типу (цілих чисел або літер). Якщо вказано крок, його буде використано як приріст між елементами послідовності. Типовим кроком є 1 або \-1, відповідно до взаємного розташування кінців послідовності. .PP Розгортання у дужках виконується до будь\-яких інших розгортань. У результатах буде збережено усі символи, які є спеціальними для інших розгортань. Розгортання є строго текстовим. \fBBash\fP не виконує жодної синтаксичної обробки контексту розгортання або тексту у фігурних дужках. .PP Правильно форматоване розгортання у дужках має містити ненейтралізовані початкову і кінцеву фігурні дужки та принаймні одну ненейтралізовану кому або один коректний вираз послідовності. Усі розгортання у дужках із помилковим форматуванням буде оброблено буквально. .PP A .Q { або Q, можна взяти в лапки зі зворотною похилою рискою, щоб запобігти тому, щоб програма вважала його частиною виразу з фігурними дужками. Щоб уникнути конфліктів із розгортанням параметрів, рядок .Q ${ не вважається придатним для розгортання у дужках та забороняє розгортання у дужках до закриття .Q } . .PP Ця конструкція типово використовується як скорочення, якщо загальний префікс рядків, які має бути створено, є довшим, ніж у наведеному вище прикладі: .PP .RS .EX mkdir /usr/local/src/bash/{old,new,dist,bugs} .EE .RE або .RS .EX chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} .EE .RE .PP Розгортання у дужках сучасних версій є дещо несумісним із давніми версіями \fBsh\fP. Старі версії \fBsh\fP не обробляють початкову або кінцеву фігурні дужки особливим чином, якщо вони є частиною слова, і зберігають їх у виведених даних. \fBBash\fP у процесі розгортання у дужках вилучає фігурні дужки зі слів. Наприклад, якщо передати \fBsh\fP слово .Q file{1,2} , виведено буде те саме слово. Результатом обробки того самого слова у \fBbash\fP буде .Q "file1 file2" \&. Якщо потрібна строга сумісність із \fBsh\fP, запускайте \fBbash\fP із параметром \fB+B\fP або вимкніть розгортання у дужках за допомогою параметра \fB+B\fP команди \fBset\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .SS "Розгортання тильди" Якщо слово починається з ненейтралізованого символу тильди ( .Q \fB\*~\fP ), усі символи до першого ненейтралізованого символу похилої риски (або усі символи, якщо у слові немає ненейтралізованої похилої риски) вважатимуться \fIтильда\-префіксом\fP. Якщо жоден із символів у тильда\-префіксі не є нейтралізованим, символи у тильда\-префіксі вважатимуться можливою \fIназвою облікового запису\fP. Якщо ця назва облікового запису є порожнім рядком, тильду буде замінено на значення параметра оболонки .SM \fBHOME\fP. Якщо значення .SM \fBHOME\fP не встановлено, тильду буде замінено на адресу домашнього каталогу користувача, від імені якого запущено оболонку. У всіх інших випадках тильда\-префікс буде замінено домашнім каталогом, пов'язаним із вказаною назвою облікового запису. .PP Якщо префіксом\-тильдою є .Q \*~+ , значення змінної оболонки .SM \fBPWD\fP замінює префікс\-тильду. Якщо префіксом\-тильдою є .Q \*~\- , оболонка замінює на значення змінної оболонки .SM \fBOLDPWD\fP, якщо її встановлено. Якщо символи після тильди в префіксі\-тильді складаються з числа \fIN\fP, можливо з префіксом .Q + або .Q \- , префікс\-тильду буде замінено відповідним елементом зі стосу каталогів, як його було б показано вбудованою функцією \fBdirs\fP, викликаною з символами, що йдуть після тильди в префіксі\-тильді, як аргументом. Якщо символи, що йдуть після тильди в префіксі\-тильді, складаються з числа без початкового .Q + або .Q \- , розгортання тильди припускає .Q + . .PP Результати розкриття тильди обробляються так, ніби вони взяті у лапки, тому заміна не підлягає розбиттю на слова та розгортанню шляхів. .PP Якщо назва облікового запису для входу є некоректною або не вдасться виконати розгортання тильди, префікс\-тильда лишиться незмінним. .PP В усіх інструкціях із встановленням значення змінної \fBbash\fP виконає перевірку на ненейтралізовані тильда\-префікси одразу після \fB:\fP або першого \fB=\fP. Якщо такі префікси буде виявлено, також буде виконано розгортання тильди. Отже, можна використовувати назви файлів з тильдами у командах зі встановленням значень для .SM \fBPATH\fP, .SM \fBMAILPATH\fP та .SM \fBCDPATH\fP — оболонка надасть змінній розгорнуте значення. .PP Крім того, \fBBash\fP виконує розгортання тильди у словах, які відповідають умовам надання змінним значення (як це описано вище у розділі .SM \fBПАРАМЕТРИ\fP), коли вони з'являються як аргументи у простих командах. У режимі posix \fBBash\fP цього не робитиме, окрім описаних вище команд \fIоголошення\fP. .SS "Розгортання параметрів" Оператор .Q \fB$\fP впроваджує розгортання параметрів, заміну команд або арифметичні обчислення. Назви параметрів або символів, які слід розгорнути, може бути взято у фігурні дужки, які є необов'язковим, але слугують для захисту змінної від розгортання змінної за символами, які вказано після її назви і які може бути оброблено як частину назви. .PP Якщо використано фігурні дужки, відповідною завершальною дужкою вважатиметься перша « .Q \fB}\fP », яку не екрановано символом зворотної похилої риски і яка не є частиною нейтралізованого рядка, і не перебуває у вбудованому арифметичному виразі, заміні команди або розгортанні параметра. .PP Базовою формою розгортання параметрів є .PP ${\fIпараметр\fP} .LP де буде підставлено значення \fIпараметра\fP. Якщо \fIпараметр\fP є позиційним параметром, номер якого складається з декількох цифр, або якщо після \fIпараметра\fP вказано символ, який не слід обробляти як частину його назви, слід скористатися фігурними дужками. \fIПараметр\fP має бути параметром оболонки, який описано вище (див. \fBПАРАМЕТРИ\fP) або посиланням на масив (\fBМасиви\fP). .PD .PP Якщо першим символом \fIпараметра\fP є знак оклику (\fB!\fP) і \fIпараметр\fP не належить до типу \fInameref\fP, він впроваджує рівень опосередкованості. \fBBash\fP використовує значення, яке сформовано розгортанням решти \fIпараметра\fP як новий \fIпараметр\fP; далі, розгортає цей новий параметр і використовує значення у решті розгортання замість розгортання початкового \fIпараметра\fP. Цей процес відомий як \fIопосередковане розгортання\fP. Отримане значення підлягає розгортанню тильди, розгортанню параметрів, заміні команд та арифметичним обчисленням. Якщо \fIпараметр\fP належить до типу nameref, розгортання дає назву параметра, на який посилається \fIпараметр\fP, а не повне опосередковане розгортання. Виключеннями з цього правила є розгортання ${\fB!\fP\fIпрефікс\fP\fB*\fP} та ${\fB!\fP\fIназва\fP[\fI@\fP]}, які описано нижче. Щоб було впроваджено опосередковане розгортання, після знаку оклику має бути одразу вказано ліву фігурну дужку. .PP В усіх наведених нижче випадках \fIслово\fP підлягатиме розгортанню тильди, розгортанню параметрів, заміні команд та арифметичним обчисленням. .PP Якщо не виконуватиметься розгортання підрядків, з використанням документованих нижче форм (наприклад, \fB:\-\fP), \fBbash\fP виконує перевірку того, чи є параметр невстановленим або порожнім. Якщо не буде використано двокрапку, виконуватиметься перевірка лише на те, чи є параметр невстановленим. .PP .TP ${\fIпараметр\fP\fB:\-\fP\fIслово\fP} \fBВикористовувати типові значення\fP. Якщо значення \fIпараметра\fP не буде встановлено або воно буде порожнім, буде підставлено розгортання \fIслова\fP. У інших випадках буде підставлено значення \fIпараметра\fP. .TP ${\fIпараметр\fP\fB:=\fP\fIслово\fP} \fBПризначити типові значення\fP. Якщо значення \fIпараметра\fP не встановлено або його значення є порожнім, для \fIпараметра\fP буде встановлено значення \fIслово\fP, а розгортанням буде остаточне значення \fIпараметра\fP. У такий спосіб не можна встановлювати значення для позиційних і спеціальних параметрів. .TP ${\fIпараметр\fP\fB:?\fP\fIслово\fP} \fBПоказ помилки, якщо порожній або не встановлено\fP. Якщо \fIпараметр\fP має порожнє значення або його значення не встановлено, розгортання \fIслова\fP (або повідомлення щодо цього ефекту, якщо \fIслова\fP немає) буде записано до стандартного потоку помилок, і оболонка, якщо вона не є інтерактивною, завершить роботу з ненульовим станом. Інтерактивна оболонка не завершить роботу, але не виконуватиме команди, яку пов'язано із розгортанням. В усіх інших випадках буде підставлено \fIпараметр\fP. .TP ${\fIпараметр\fP\fB:+\fP\fIслово\fP} \fBВикористати альтернативне значення\fP. Якщо \fIпараметр\fP має порожнє значення або значення параметра не встановлено, підставляння не виконуватиметься. В усіх інших випадках буде підставлено розгортання \fIслова\fP. Буде використано значення \fIпараметра\fP. .TP .PD 0 ${\fIпараметр\fP\fB:\fP\fIвідступ\fP} .TP .PD ${\fIпараметр\fP\fB:\fP\fIвідступ\fP\fB:\fP\fIдовжина\fP} \fBРозгортання підрядка\fP. Буде розгорнуто до \fIдовжина\fP символів значення \fIпараметр\fP, починаючи з символу, який вказано значенням \fIвідступ\fP. Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, індексований масив із підписом \fB@\fP або \fB*\fP або назва асоціативного масиву, результат буде іншим, описаним нижче. Якщо \fB:\fP \fIдовжина\fP не вказано (перша форма вище), буде виконано розгортання до підрядка значення \fIпараметра\fP, що починається з символу, вказаного аргументом \fIвідступ\fP, і продовжується до кінця значення. Якщо \fIвідступ\fP не вказано, значенням відступу вважається 0. Якщо не вказано \fIдовжину\fP, але є двокрапка після\fIвідступу\fP, відступ вважатиметься рівним 0. Значення \fIдовжина\fP і \fIвідступ\fP є арифметичними виразами (див. .SM \fBАРИФМЕТИЧНІ ОБЧИСЛЕННЯ\fP нижче). .IP Якщо обчисленим значенням \fIвідступу\fP є від'ємне число, значення буде використано як відступ у символах з кінця значення \fIпараметра\fP. Якщо обчисленим значенням \fIдовжини\fP є від'ємне число, його буде використано як відступ у символах від кінця значення \fIпараметра\fP, а не кількість символів, а результатом розгортання будуть символи між значенням \fIвідступу\fP і обчисленим значенням довжини. Зауважте, що від'ємний відступ має бути відокремлено від двокрапки принаймні одним пробілом, щоб його не можна було сплутати з розгортанням \fB:\-\fP. .IP Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, результатом буде \fIдовжина\fP позиційних параметрів, починаючи з параметра \fIвідступ\fP. Від'ємні значення \fIвідступу\fP буде відраховано від значення на одиницю більшого за найбільший позиційний параметр. Отже, відступ \-1 визначає останній позиційний параметр (або 0, якщо позиційних параметрів немає). Якщо обчисленим значенням аргументу \fIдовжина\fP є від'ємне значення, програма повідомить про помилку розгортання. .IP Якщо \fIпараметром\fP є назва індексованого масиву із підписом @ або *, результатом буде \fIдовжина\fP елементів масиву, починаючи з ${\fIпараметр\fP[\fIвідступ\fP]}. Від'ємні значення аргументу \fIвідступ\fP буде відраховано від номера, який на одиницю більший за максимальний індекс у вказаному масиві. Якщо обчисленим значенням аргументу \fIдовжина\fP є від'ємне значення, програма повідомить про помилку розгортання. .IP Застосоване до асоціативного масиву розгортання підрядків дає невизначені результати. .IP Відлік елементів у підрядках ведеться від нуля, якщо не використано позиційних параметрів. У випадку використання позиційних параметрів, типово, індексування починається з 1. Якщо \fIвідступ\fP дорівнює 0 і використано позиційні параметри, до списку буде дописано префікс \fB$0\fP. .TP .PD 0 ${\fB!\fP\fIпрефікс\fP\fB*\fP} .TP ${\fB!\fP\fIпрефікс\fP\fB@\fP} .PD \fBПрефікс відповідності назв\fP. Буде розгорнуто до назв змінних, чиї назви починаються з \fIпрефікса\fP. Записи назви буде відокремлено першим символом спеціальної змінної .SM \fBIFS\fP. Якщо використано \fI@\fP і розгортання відбувається у подвійних лапках, кожну назву змінної буде розгорнуто в окреме слово. .TP .PD 0 ${\fB!\fP\fIназва\fP[\fI@\fP]} .TP ${\fB!\fP\fIназва\fP[\fI*\fP]} .PD \fBСписок ключів масиву\fP. Якщо \fIназва\fP є змінною\-масивом, буде розгорнуто до списку індексів (ключів) масиву, яким надано значення у масиві \fIназва\fP. Якщо \fIназва\fP не є масивом, буде розгорнуто у 0, якщо значення \fIназва\fP встановлено, і порожнє значення, якщо ні. Якщо використано \fI@\fP і розгортання відбувається у подвійних лапках, кожен ключ буде розгорнуто до окремого слова. .TP ${\fB#\fP\fIпараметр\fP} \fBДовжина параметра\fP. Буде замінено на довжину розгорнутого значення \fIпараметра\fP у символах. Якщо \fIпараметром\fP є \fB*\fP або \fB@\fP, буде замінено кількістю позиційних параметрів. Якщо \fIпараметром\fP є назва масиву із підписом \fB*\fP або \fB@\fP, буде замінено на кількість елементів у масиві. Якщо \fIпараметр\fP є назвою індексованого масиву із підписом — від'ємним числом, це число відраховуватиметься від більшого на одиницю за максимальний індекс \fIпараметра\fP числа. Отже від'ємні індекси відраховуються від кінця масиву, а індекс \-1 відповідає останньому елементу масиву. .TP .PD 0 ${\fIпараметр\fP\fB#\fP\fIслово\fP} .TP ${\fIпараметр\fP\fB##\fP\fIслово\fP} .PD \fBВилучення префікса за взірцем\fP. \fIСлово\fP буде розгорнуто для отримання взірця, як у розгортанні шляхів. Отриманий взірець буде використано для обробки розгорнутого значення \fIпараметра\fP з використанням правил, які описано у розділі \fBВідповідність за взірцем\fP нижче. Якщо взірець відповідатиме початку значення \fIпараметра\fP, результатом розгортання буде розгорнуте значення \fIпараметра\fP, з якого вилучено найкоротший відповідний взірець (випадок .Q # ) або найдовший відповідний взірець (випадок .Q ## Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, дію з вилучення взірця буде застосовано до кожного позиційного параметра послідовно, а результатом розгортання буде оброблений список. Якщо \fIпараметром\fP є змінна\-масив із підписом \fB@\fP або \fB*\fP, дію з вилучення взірцябуде застосовано до кожного елемента у масиві послідовно, а результатом розгортання буде оброблений список. .TP .PD 0 ${\fIпараметр\fP\fB%\fP\fIслово\fP} .TP ${\fIпараметр\fP\fB%%\fP\fIслово\fP} .PD \fBВилучення суфікса за взірцем\fP. \fIСлово\fP буде розгорнуто для отримання взірця, як у розгортанні шляхів. Отриманий взірець буде використано для обробки розгорнутого значення \fIпараметра\fP з використанням правил, які описано у розділі \fBВідповідність за взірцем\fP нижче. Якщо взірець відповідатиме завершенню значення \fIпараметра\fP, результатом розгортання буде розгорнуте значення \fIпараметра\fP, з якого вилучено найкоротший відповідний взірець (випадок .Q % ) або найдовший відповідний взірець (випадок .Q %% Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, дію з вилучення взірця буде застосовано до кожного позиційного параметра послідовно, а результатом розгортання буде оброблений список. Якщо \fIпараметром\fP є змінна\-масив із підписом \fB@\fP або \fB*\fP, дію з вилучення взірцябуде застосовано до кожного елемента у масиві послідовно, а результатом розгортання буде оброблений список. .TP .PD 0 ${\fIпараметр\fP\fB/\fP\fIвзірець\fP\fB/\fP\fIрядок\fP} .TP ${\fIпараметр\fP\fB//\fP\fIвзірець\fP\fB/\fP\fIрядок\fP} .TP ${\fIпараметр\fP\fB/#\fP\fIвзірець\fP\fB/\fP\fIрядок\fP} .TP ${\fIпараметр\fP\fB/%\fP\fIвзірець\fP\fB/\fP\fIрядок\fP} .PD \fBЗаміна за взірцем\fP. \fIВзірець\fP буде розгорнуто для створення взірця та зіставляється з розгорнутим значенням \fIпараметра\fP, як описано в розділі \fBВідповідність за взірцем\fP нижче. Найдовший збіг зі \fIвзірцем\fP у розгорнутому значенні замінюється на \fIрядок\fP. \fIРядок\fP підлягає розгортанню тильди, розгортанню параметрів та змінних, арифметичному розгортанню, заміні команд та процесів, а також вилученню лапок. .IP У першій формі вище буде замінено лише перший збіг. Якщо використано дві похилі риски, що розділяють \fIпараметр\fP та \fIвзірець\fP (друга форма вище), усі збіги \fIвзірця\fP буде замінено на \fIрядок\fP. Якщо перед \fIвзірцем\fP стоїть \fB#\fP (третя форма вище), він має збігатися з фрагментом на початку розгорнутого значення \fIпараметра\fP. Якщо перед \fIвзірцем\fP стоїть \fB%\fP (четверта форма вище), він має збігатися з фрагментом у кінці розгорнутого значення \fIпараметра\fP. .IP Якщо розгортанням \fIрядка\fP є порожнє значення, відповідники \fIвзірця\fP буде вилучено, а \fB/\fP з наступним \fIвзірцем\fP може бути пропущено. .IP Якщо увімкнено параметр оболонки \fBpatsub_replacement\fP за допомогою \fBshopt\fP, усі екземпляри \fB&\fP у рядку \fIрядок\fP буде замінено відповідною частиною \fIвзірця\fP. .IP Взяття у лапки будь\-якої частини \fIрядка\fP забороняє заміну у розгортанні взятої у лапки частини, включно із заміною рядків, що зберігаються у змінних оболонки. Символ зворотної похилої риски екранує \fB&\fP у \fIрядку\fP; символ зворотної похилої риски буде вилучено для уможливлення використання самого символу \fB&\fP у рядку заміннику. Також символом зворотної похилої риски можна скористатися для екранування символу зворотної похилої риски; використання \fB\e\e\fP дає сам символ зворотної похилої риски у заміні. Користувачам слід подбати про подвійне взяття у лапки \fIрядка\fP, щоб уникнути небажаного конфлікту між екрануванням символом зворотної похилої риски і взяття у подвійні лапки, оскільки символ зворотної похилої риски має спеціальне значення у подвійних лапках. Засіб підставляння за взірцем виконує перевірку на \fB&\fP поза лапками після розгортання \fIрядка\fP; програмісти для коду оболонки мають брати у лапки усі \fB&\fP, які має бути використано буквально у заміннику і використати поза лапками усі екземпляри \fB&\fP, які має бути замінено. .IP Як і оператори вилучення за взірцем, подвійні лапки, у які взято рядок заміни, екранують розгорнуті символи, тоді як подвійні лапки, у які взято увесь блок підставляння параметрів, цього не роблять, оскільки розгортання виконується у контексті, який не враховує жодних лапок, у які взято рядок. .IP Якщо увімкнено параметр оболонки \fBnocasematch\fP, встановлення відповідності буде виконано без урахування регістру літер. .IP Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, дію з заміни буде застосовано до кожного позиційного параметра послідовно, а результатом розгортання буде оброблений список. Якщо \fIпараметром\fP є змінна\-масив із підписом \fB@\fP або \fB*\fP, дію з заміни буде застосовано до кожного елемента у масиві послідовно, а результатом розгортання буде оброблений список. .TP .PD 0 ${\fIпараметр\fP\fB\*^\fP\fIвзірець\fP} .TP ${\fIпараметр\fP\fB\*^\*^\fP\fIвзірець\fP} .TP ${\fIпараметр\fP\fB,\fP\fIвзірець\fP} .TP ${\fIпараметр\fP\fB,,\fP\fIвзірець\fP} .PD \fBЗміна регістру\fP. Це розгортання змінює регістр літер у \fIпараметрі\fP. Спочатку \fIвзірець\fP буде розгорнуто для створення взірця, як описано нижче в розділі .SM \fBВідповідність за взірцем\fP. Потім \fBbash\fP перевіряє символи у розгорнутому значенні \fIпараметра\fP на відповідність \fIвзірцю\fP, як описано нижче. Якщо символ відповідає взірцю, його регістр буде перетворено. Не слід намагатися встановлювати відповідність взірцю понад одного символу. .IP Використання .Q \*^ перетворює літери нижнього регістру, які відповідають \fIвзірцю\fP, на літери верхнього регістру; .Q , перетворює відповідні літери верхнього регістру на літери нижнього регістру. Варіанти \fB\*^\fP та \fB,\fP перевіряють перший символ у розгорнутому значенні та перетворюють його регістр, якщо він відповідає \fIвзірцю\fP; варіанти \fB\*^\*^\fP та \fB,,\fP перевіряють усі символи в розгорнутому значенні та перетворюють кожен символ, який відповідає \fIвзірцю\fP. Якщо \fIвзірець\fP не вказано, його буде оброблено як \fB?\fP, символ, який відповідає будь\-якому символу. .IP Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, дію зі зміни регістру буде застосовано до кожного позиційного параметра послідовно, а результатом розгортання буде оброблений список. Якщо \fIпараметром\fP є змінна\-масив із підписом \fB@\fP або \fB*\fP, дію зі зміни регістру буде застосовано до кожного елемента у масиві послідовно, а результатом розгортання буде оброблений список. .TP .PD 0 ${\fIпараметр\fP\fB@\fP\fIоператор\fP} \fBПеретворення параметрів\fP. Розгортанням буде або перетворення значення \fIпараметра\fP або відомості щодо самого \fIпараметра\fP, залежно від значення \fIоператора\fP. Усі \fIоператори\fP складаються з однієї літери: .PP .RS .TP \fBU\fP Результатом розгортання є рядок, який є значенням \fIпараметра\fP, у якому літери нижнього регістру (малі) замінено на відповідні їм літери верхнього регістру (великі). .TP \fBu\fP Результатом розгортання є рядок, який є значенням \fIпараметра\fP, у якому перший символ буде замінено на відповідну літеру верхнього регістру (велику), якщо перший символ є літерою. .TP \fBL\fP Результатом розгортання є рядок, який є значенням \fIпараметра\fP, у якому літери верхнього регістру (великі) замінено на відповідні їм літери нижнього регістру (малі). .TP \fBQ\fP Результатом розгортання є рядок, який є значенням \fIпараметра\fP, у якому вміст нейтралізовано до формату, який можна використати як вхідні дані. .TP \fBE\fP Результатом розгортання є рядок, який є значенням \fIпараметра\fP, у якому екрановані послідовності із символом зворотної похилої риски буде розгорнуто так, як у механізмі нейтралізації \fB$\*'\fP.\|.\|.\%\fB\*'\fP. .TP \fBP\fP Результатом розгортання є рядок, який є розгортанням \fIпараметра\fP у такий спосіб, наче він є рядком запиту (див. \fBЗАПИТИ\fP нижче). .TP \fBA\fP Розгортанням є рядок у формі інструкції зі встановлення значення або команди \fBdeclare\fP, яка, якщо її виконати, повторно створить \fIпараметр\fP з його атрибутами і значенням. .TP \fBK\fP Дає, можливо, нейтралізовану версію значення \fIпараметра\fP, але виводить значення індексованих або асоціативних масивів як послідовність нейтралізованих пар ключ\-значення (див. \fBМасиви\fP вище). Ключі і значення буде взято у лапки у форматі, який може бути повторно використано як вхідні дані. .TP \fBa\fP Розгортанням буде рядок, що складається зі значень прапорців, що відповідають атрибутам \fIпараметра\fP. .TP \fBk\fP Подібне до K\-перетворення, але розгортає ключі і значення індексованих і асоціативних масивів в окремі слова після поділу на слова. .PD .PP Якщо \fIпараметром\fP є \fB@\fP або \fB*\fP, дію буде застосовано до кожного позиційного параметра послідовно, а результатом розгортання буде оброблений список. Якщо \fIпараметром\fP є змінна\-масив із підписом \fB@\fP або \fB*\fP, дію буде застосовано до кожного елемента у масиві послідовно, а результатом розгортання буде оброблений список. .PP Результат розгортання розгортання буде поділено на слова і застосовано до нього розгортання шляхів у описаний нижче спосіб. .RE .SS "Заміна команд" \fIЗаміна команд\fP уможливлює заміну назви команди на результат її виконання. Передбачено дві стандартні форми: .RS .PP \fB$(\fP\fIкоманда\fP\|\fB)\fP .RE або (застаріле) .RS \fB\`\fP\fIкоманда\fP\fB\`\fP. .RE .PP \fBBash\fP виконує розгортання, виконавши \fIкоманду\fP у середовищі підоболонки і замінивши команду на стандартне виведення команди із вилученням усіх кінцевих символів нового рядка. Вбудовані нові рядки не буде вилучено, але їх може бути вилучено під час поділу на слова. Заміну команди \fB$(cat \fP\fIфайл\fP\fB)\fP може бути замінено еквівалентним, але швидшим, \fB$(< \fP\fIфайл\fP\fB)\fP. .PP Якщо використано стару форму заміни із використанням зворотного апострофа, зворотний апостроф зберігає своє буквальне значення, якщо після нього не вказано \fB$\fP, \fB\`\fP або \fB\e\fP. Перший зворотний апостроф, перед яким немає символу зворотної похилої риски, завершує заміну команди. Якщо використано форму $(\^\fIкоманда\fP\|), усі символи у дужках складають команду; жоден з цих символів не підлягатиме особливій обробці. .PP Існує альтернативна форма заміни команд: .RS .PP \fB${\fP\fIc\fP \fIкоманда\fP\fB;\fP\|\fB}\fP .RE .PP яка виконує \fIкоманду\fP у поточному середовищі виконання та перехоплює її виведення, знову ж таки, без кінцевих символів нового рядка. .PP Символ \fIc\fP після відкритої фігурної дужки має бути пробілом, табуляцією, символом нового рядка або \fB|\fP, а завершальна фігурна дужка має перебувати у позиції, де може з'явитися зарезервоване слово (тобто перед нею має стояти символ завершення команди, такий як крапка з комою). \fBBash\fP дозволяє поєднувати завершальну фігурну дужку з рештою символів у слові без додавання метасимволу оболонки, як це зазвичай вимагає зарезервоване слово. .PP Будь\-які побіжні ефекти від \fIcommand\fP набувають чинності негайно у поточному середовищі виконання і зберігаються у поточному середовищі після завершення команди (наприклад, вбудована функція \fBexit\fP завершує роботу оболонки). .PP Цей тип заміни команд з першого погляду нагадує виконання неіменованої функції оболонки: локальні змінні створюються так само, як під час виконання функції оболонки, а вбудована функція \fBreturn\fP примушує \fIкоманду\fP завершити виконання; однак решта середовища виконання, включаючи позиційні параметри, використовується спільно з функцією, з якої відбувається виклик. .PP Якщо першим символом після відкритої дужки є \fB|\fP, конструкція розгортається до значення змінної оболонки \fBREPLY\fP після виконання \fIкоманди\fP, без вилучення будь\-яких символів нового рядка в кінці, а стандартне виведення \fIкоманди\fP залишається таким самим, як і у оболонці, звідки відбувається виклик. \fBBash\fP створює \fBREPLY\fP як початково невстановлену локальну змінну під час виконання \fIкоманди\fP і відновлює \fBREPLY\fP до значення, яке вона мала до заміни команди після завершення \fIкоманди\fP, як і будь\-яку локальну змінну. .PP Заміна команд може бути вкладеною. Для створення вкладеності у формі зі зворотним апострофом екрануйте внутрішні зворотні апострофи символами зворотних похилих рисок. .PP Якщо заміну взято у подвійні лапки, до результатів не буде застосовано поділ на слова та розгортання шляхів. .SS "Арифметичні обчислення" За допомогою арифметичних обчислень можна визначати значення арифметичного виразу і підставляти до команди результат. Формат арифметичних обчислень є таким: .RS .PP \fB$((\fP\fIвираз\fP\fB))\fP .RE .PP \fIВираз\fP підлягає тим самим розгортанням, що і вираз, якщо його взято у подвійні лапки, але неекрановані подвійні лапки у дужках не оброблятимуться якимось спеціальним чином і просто вилучатимуться. Усі елементи у виразі підлягатимуть розгортанню параметрів та змінних, заміні команд та вилученню нейтралізації. Результат буде оброблено як арифметичний вираз для обчислення. Оскільки спосіб обробки подвійних лапок у Bash потенційно може призвести до порожніх рядків, засіб арифметичного розгортання розглядає їх як вирази, що дорівнюють 0. Арифметичні обчислення можуть бути вкладеними. .PP Обчислення буде виконано відповідно до наведених нижче у розділі .SM \fBАРИФМЕТИЧНІ ОБЧИСЛЕННЯ\fP правил. Якщо \fIвираз\fP є некоректним, \fBbash\fP виведе до стандартного виведення помилок повідомлення, що вказуватиме на помилку, і не виконуватиме команди, пов'язаної із розгортанням. .SS "Заміна процесу" За допомогою \fIзаміни процесів\fP можна посилатися на вхідні і вихідні канали процесів, як на назви файлів. Заміну процесів записують у формі \fB<(\fP\fIсписок\^\fP\fB)\fP або \fB>(\fP\fIсписок\^\fP\fB)\fP. \fIСписок\fP процесів буде запущено асинхронно, а якого вхідний і вихідний канали стануть доступними через назву файла. У результаті заміни, цю назву файла буде передано як аргумент поточній команді. .PP Якщо використано форму \fB>(\fP\fIсписок\^\fP\fB)\fP, запис до файла буде вхідним каналом для \fIсписку\fP. Якщо використано форму \fB<(\fP\fIсписок\^\fP\fB)\fP, слід буде виконати читання файла, переданого як аргумент, щоб отримати доступ до вихідного каналу \fIсписку\fP. Між \fB<\fP або \fB>\fP і лівою дужкою не можна використовувати пробіл, інакше інструкцію буде оброблено як переспрямовування. .PP Підтримку заміни процесів передбачено у системах, де є підтримка іменованих каналів (\fIFIFO\fP) або метод іменування відкритих файлів \fI/dev/fd\fP. .PP Коли можливо, заміна процесу виконується одночасно з розгортанням параметрів і змінних, заміною команд та арифметичними обчисленнями. .SS "Поділ на слова" Оболонка сканує результати розгортання параметрів, заміни команд і арифметичних обчислень, які не було виконано всередині подвійних лапок для \fIподілу на слова\fP. Слова, які не було розгорнуто, не буде поділено. .PP Оболонка трактує кожен символ .SM \fBIFS\fP як роздільник та розділяє результати інших розгортань на слова, використовуючи ці символи як роздільники полів. .PP Символ \fIпробілу IFS\fP – це пробіл, як визначено вище (див. \fBВизначення\fP), який з'являється у значенні .SM \fBIFS\fP. Пробіл, табуляція та новий рядок завжди вважаються пробілами IFS, навіть якщо їх не буде у категорії \fBspace\fP локалі. .PP Якщо значення .SM \fBIFS\fP не встановлено, розділення полів діє так, ніби його значення було \fB\fP, і обробляє ці символи як пробіли IFS. Якщо значення .SM \fBIFS\fP є порожнім, поділ на слова не відбувається, але неявні порожні аргументи (див. нижче) все одно буде вилучено. .PP Поділ на слова слів починається з вилучення послідовностей пробільних символів IFS з початку та кінця результатів попередніх розгортань, з наступним поділом на слова решти. .PP Якщо значення .SM \fBIFS\fP складається лише з пробілів IFS, будь\-яка послідовність символів пробілів IFS обмежує поле, тому поле складається з символів, які не є пробілами IFS без лапок, а поля з порожнім значенням утворюються лише у результаті використання лапок. .PP Якщо .SM \fBIFS\fP містить непробілний символ, то будь\-який символ у значенні .SM \fBIFS\fP, який не є пробілом IFS, разом з будь\-якими сусідніми пробілами IFS, вважається межею поля. Це означає, що сусідні роздільники, що не є пробілами IFS, створюють нульове поле. Послідовність пробілів IFS також вважається межею поля. .PP Явні порожні аргументи (\^\fB\*"\^\*"\fP або \^\fB\*'\^\*'\fP\^) буде збережено і передано команди як порожні рядки. Ненейтралізовані неявні порожні аргументи, які є результатом розгортання параметрів, які не мають значень, буде вилучено. Якщо параметр без значення буде розгорнуто у подвійних лапках, буде отримано порожній аргумент; його буде збережено і передано команді як порожній рядок. .PP Якщо нейтралізований порожній аргумент буде частиною слова, чиє розгортання не є порожнім, механізм поділу на слова вилучить частину з порожнім аргументом, лишивши ненульове розгортання. Таким чином, слово .Q \-d\*'\^\*' перетворюється на .Q \-d після поділу на слова і вилучення порожніх аргументів. .SS "Розгортання шляхів" Після розбиття на слова, якщо не встановлено параметр \fB\-f\fP, \fBbash\fP сканує кожне слово на наявність символів \fB*\fP, \fB?\fP та \fB[\fP. Якщо один із цих символів буде виявлено, і його не взято в лапки, то слово вважатиметься \fIшаблоном\fP — його буде замінено упорядкованим списком назв файлів, що відповідають шаблону (див. .SM \fBВідповідність за взірцем\fP нижче) з урахуванням значення змінної оболонки \fBGLOBSORT\fP. .PP Якщо не знайдено жодних відповідних назв файлів, а параметр оболонки \fBnullglob\fP не встановлено, слово залишається незмінним. Якщо параметр \fBnullglob\fP встановлено, а збігів не знайдено, слово буде вилучено. Якщо параметр оболонки \fBfailglob\fP встановлено, а збігів не знайдено, \fBbash\fP виводить повідомлення про помилку і не виконує команду. Якщо параметр оболонки \fBnocaseglob\fP встановлено, зіставлення виконується без урахування регістру літер. .PP Якщо для розгортання шляхів використано взірець, символ .Q .\& at the start of a name or immediately following a slash must be matched explicitly, unless the shell option \fBdotglob\fP is set. In order to match the filenames .FN .\& and .FN ..\& , the pattern must begin with .Q .\& (наприклад, .Q .?\& ), even if \fBdotglob\fP is set. If the \fBglobskipdots\fP shell option is enabled, the filenames .FN .\& and .FN ..\& never match, even if the pattern begins with a .Q .\& . Якщо не встановлюється відповідність шляхам, символ .Q .\& не вважатиметься особливим. .PP Під час зіставлення з назвою шляху символ похилої риски завжди має явно збігатися із похилою рискою у взірці, але в інших контекстах встановлення відповідності він може збігатися зі спеціальним символом взірця, як описано нижче в розділі .SM \fBВідповідність за взірцем\fP. .PP Див. опис \fBshopt\fP нижче у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP, де наведено опис параметрів оболонки \fBnocaseglob\fP, \fBnullglob\fP, \fBglobskipdots\fP, \fBfailglob\fP та \fBdotglob\fP. .PP The .SM \fBGLOBIGNORE\fP shell variable may be used to restrict the set of file names matching a \fIpattern\fP. If .SM \fBGLOBIGNORE\fP is set, each matching file name that also matches one of the patterns in .SM \fBGLOBIGNORE\fP is removed from the list of matches. If the \fBnocaseglob\fP option is set, the matching against the patterns in .SM \fBGLOBIGNORE\fP is performed without regard to case. The filenames .FN .\& and .FN ..\& are always ignored when .SM \fBGLOBIGNORE\fP is set and not null. However, setting .SM \fBGLOBIGNORE\fP to a non\-null value has the effect of enabling the \fBdotglob\fP shell option, so all other filenames beginning with a .Q .\& \&. Щоб отримати стару поведінку з ігноруванням назв файлів, що починаються з .Q .\& , , зробіть .Q .* одним із взірців у .SM \fBGLOBIGNORE\fP. Параметр \fBdotglob\fP буде вимкнено, якщо не встановлено значення .SM \fBGLOBIGNORE\fP. При встановленні відповідності взірцю буде взято до уваги значення параметра оболонки \fBextglob\fP. .PP Значення змінної оболонки .SM \fBGLOBSORT\fP контролює, як буде упорядковано результати розгортання шляху, як описано вище у розділі \fBЗмінні оболонки\fP. .PP \fBВідповідність за взірцем\fP .PP Будь\-який символ, який з’являється у взірці, окрім спеціальних символів взірця, описаних нижче, збігається сам із собою. Символ NUL може не зустрічатися у взірці. Зворотна похила риска екранує наступний символ; при збігу зворотна похила риска відкидається. Спеціальні символи взірця слід уводити в лапках, якщо вони мають відповідати буквально. .PP Спеціальні символи взірців мають таке значення: .PP .PD 0 .RS .TP \fB*\fP Збігається з будь\-яким рядком, включаючи нульовий (null) рядок. Якщо увімкнено параметр оболонки \fBglobstar\fP і в контексті розширення назви шляху використовується \fB*\fP, дві \fB*\fP поруч, використані як єдиний взірець, відповідатимуть усім файлам і нулю або більше каталогів і підкаталогів. Якщо далі йде \fB/\fP, дві \fB*\fP поруч відповідатимуть лише каталогам і підкаталогам. .TP \fB?\fP Відповідає будь\-якому одинарному символу. .TP \fB[\fP.\|.\|.\fB]\fP .PD Відповідає будь\-якому із символів, які взято у дужки. Це називається \fIвиразому у дужках\fP і відповідає одному символу. Пара символів, розділених дефісом, позначає \fIвираз діапазону\fP; відповідає будь\-якому символу, що міститься між цими двома символами включно, з використанням послідовності порівняння поточної локалі та набору символів. Якщо першим після \fB[\fP є символ \fB!\fP або \fB\*^\fP, то відповідає будь\-якому не вкладеному символу. \fB\-\fP можна увідповіднити, включивши його в набір як перший або останній символ. \fB]\fP можна увідповіднити, включивши в набір як перший символ. .IP Порядок сортування символів у виразі діапазону і символах, включених до діапазону, визначається поточним мовним стандартом і значеннями змінних оболонки .SM \fBLC_COLLATE\fP або .SM \fBLC_ALL\fP, якщо їх встановлено. Для отримання традиційної інтерпретації виразів діапазону, де \fB[a\-d]\fP еквівалентне \fB[abcd]\fP, встановіть для змінної оболонки \fBLC_COLLATE\fP або \fBLC_ALL\fP значення або увімкніть параметр оболонки \fBglobasciiranges\fP. .IP У виразі між дужками можна вказувати \fIкласи символів\fP у формі такої синтаксичної конструкції: \fB[:\fP\fIклас\fP\fB:]\fP, де \fIклас\fP є одним із вказаних нижче класів, які визначено у стандарті .SM POSIX : .IP .RS .B .if n alnum alpha ascii blank cntrl digit graph lower print punct space \ upper word xdigit .if t alnum alpha ascii blank cntrl digit graph lower \ print punct space upper word xdigit .RE .IP Клас символів відповідає будь\-якому символу, що належить класу. Клас символів \fBword\fP відповідає літерам, цифрам та символам _. .IP У виразі у дужках можна задати \fIклас еквівалентності\fP, скориставшись синтаксисом \fB[=\fP\fIc\fP\fB=]\fP, який відповідає всім символам з такою ж вагою зіставлення (як визначено поточним мовним стандартом), що й символ \fIc\fP. .IP У виразі між дужками, синтаксису \fB[.\fP\fIсимвол\fP\fB.]\fP відповідає символ зіставлення \fIсимвол\fP. .RE .PP Якщо параметр оболонки \fBextglob\fP увімкнено за допомогою вбудованої команди \fBshopt\fP, оболонка розпізнає кілька розширених операторів відповідності взірцю. В подальшому описі \fIсписок_взірців\fP \- це список із одного або кількох взірців, розділених символом \fB|\fP. Складені взірці можна сформувати за допомогою одного або кількох із таких підвзірців: .PP .PD 0 .RS .TP \fB?(\fP\^\fIсписок_взірвців\^\fP\fB)\fP Відповідає нульовій або одинарній кількості відповідників вказаних взірців. .TP \fB*(\fP\^\fIсписок_взірвців\^\fP\fB)\fP Відповідає нулю, одному або декільком збігам із заданим взірцем. .TP \fB+(\fP\^\fIсписок_взірців\^\fP\fB)\fP Відповідає одному або декільком збігам із заданим взірцем. .TP \fB@(\fP\^\fIсписо_взірців\^\fP\fB)\fP Відповідає одному з заданих взірців. .TP \fB!(\fP\^\fIсписок_взірців\^\fP\fB)\fP Відповідає усьому, окрім одного з заданих взірців. .RE .PD .PP Параметр \fBextglob\fP змінює поведінку обробника, оскільки зазвичай дужки вважаються операторами із синтаксичним значенням. Щоб розширені взірці відповідності було оброблено належним чином, слід увімкнути \fBextglob\fP до обробки конструкцій, що містять ці взірці, включно із функціями оболонки та підставлянням команд. .PP Під час встановлення відповідності назв файлів параметр оболонки \fBdotglob\fP визначає набір назв файлів, які буде перевірено: якщо параметр \fBdotglob\fP увімкнено, набір назв файлів включає всі файли, що починаються з .Q .\& , but .FN .\& and .FN ..\& must be matched by a pattern or sub\-pattern that begins with a dot; when it is disabled, the set does not include any filenames beginning with .Q .\& якщо взірець або підвзірець починається з .Q .\& . If the \fBglobskipdots\fP shell option is enabled, the filenames .FN .\& and .FN ..\& never appear in the set. As above, .Q .\& має спеціальне значення лише при встановленні відповідності назв файлів. .PP Зіставлення складних розширених взірців із довгими рядками виконується повільно, особливо коли взірці містять чергування, а рядки містять кілька збігів. Використання окремих збігів для коротших рядків або використання масивів рядків замість одного довгого рядка може бути швидшим. .SS "Вилучення лапок" Після попередніх розгортань усі ненейтралізовані послідовності символів \fB\e\fP, \fB\*'\fP і \^\fB"\fP\^, які не були результатом вказаних вище розгортань, буде вилучено. .SH ПЕРЕСПРЯМОВУВАННЯ Перш ніж команду буде виконано, її вхід і вихід може бути \fIпереспрямовано\fP за допомогою спеціальних позначень, які обробляє оболонка. За допомогою переспрямувань можна дублювати, відкривати, закривати, замінювати на посилання на інші файли дескриптори файлів команди, а також змінювати файли, з яких програма читатиме дані і до яких вона записуватиме дані. Якщо використано разом із вбудованою командою \fBexec\fP, переспрямування вноситимуть зміни до дескрипторів файлів у поточному середовищі виконання оболонки. Описані нижче оператори переспрямовування можуть передувати \fIпростій команді\fP, бути розташованими у ній або слідувати за \fIкомандою\fP. Переспрямування буде оброблено у вказаному у команді порядку, зліва праворуч. .PP Перед кожним переспрямуванням, перед яким можна вказати номер дескриптора файла, можна також вказати слово у формі {\fIназва\-змінної\fP}. У таких випадках, для кожного оператора переспрямування, окрім \fB>&\-\fP і \fB<&\-\fP, оболонка розмістить у пам'яті дескриптор файла із номером, що перевищує 9, і встановить для нього значення \fIназва\-змінної\fP. Якщо перед \fB>&\-\fP або \fB<&\-\fP буде вказано {\fIназва\-змінної\fP}, значення \fIназва\-змінної\fP визначить дескриптор файла, який слід закрити. Якщо вказано аргумент {\fIназва\-змінної\fP}, переспрямування працюватиме за областю дії команди, що надає змогу програмісту оболонки керувати самим дескриптором файла вручну без використання вбудованої команди \fBexec\fP. Цією поведінкою керує параметр оболонки \fBvarredir_close\fP. .PP У наведених нижче описах, якщо не вказано номера дескриптора файла, і першим символом оператора переспрямування є .Q < , термін «переспрямування» стосується стандартного введення (дескриптор файла 0). Якщо першим символом оператора переспрямування є .Q > , термін «переспрямування» стосується стандартного виведення (дескриптор файла 1). .PP Слово, яке слідує за оператором переспрямування у наведених нижче описах, якщо окремо не написано іншого, підлягає розгортанню у дужках, розгортанню тильди, розгортанню параметрів та змінних, заміні команд, арифметичним обчисленням, вилученню нейтралізації, розгортанню шляхів та поділу на слова. Якщо у результаті розгортання буде отримано декілька слів, \fBbash\fP повідомить про помилку. .PP Порядок переспрямувань має значення. Наприклад, команда .RS .PP ls \fB>\fP dirlist 2\fB>&\fP1 .RE .PP спрямовує стандартне виведення та стандартне виведення помилок до файла \fIdirlist\fP, а команда .RS .PP ls 2\fB>&\fP1 \fB>\fP dirlist .RE .PP спрямовує лише стандартне виведення до файла \fIdirlist\fP, оскільки стандартне виведення помилок було дубльовано зі стандартного виведення до того, як стандартне виведення було переспрямовано до файла \fIdirlist\fP. .PP Деякі назви файлів при використанні переспрямувань \fBbash\fP обробляє по\-особливому, так, як це описано у наведеній нижче таблиці. Якщо операційна система, у якій запущено \fBbash\fP, надає доступ до цих спеціальних файлів, \fBbash\fP скористається ними. Якщо ні, \fBbash\fP емулюватиме їх на внутрішньому рівні, скориставшись поведінкою, яку описано нижче. .RS .PP .PD 0 .TP \fB/dev/fd/\fP\fIдескриптор_файла\fP Якщо \fIдескриптор_файла\fP є коректним цілим числом, буде здубльовано дескриптор файла \fIдескриптор_файла\fP. .TP \fB/dev/stdin\fP Буде здубльовано дескриптор файла 0. .TP \fB/dev/stdout\fP Буде здубльовано дескриптор файла 1. .TP \fB/dev/stderr\fP Буде здубльовано дескриптор файла 2. .TP \fB/dev/tcp/\fP\fIвузол\fP\fB/\fP\fIпорт\fP Якщо \fIвузол\fP є коректною назвою вузла або інтернет\-адресою, і \fIпорт\fP є цілим числом — номером порту або назвою служби, \fBbash\fP спробує відкрити відповідний сокет TCP. .TP \fB/dev/udp/\fP\fIвузол\fP\fB/\fP\fIпорт\fP Якщо \fIвузол\fP є коректною назвою вузла або інтернет\-адресою, і \fIпорт\fP є цілим числом — номером порту або назвою служби, \fBbash\fP спробує відкрити відповідний сокет UDP. .PD .RE .PP Неможливість відкрити або створити файл спричиняє помилку переспрямовування. .PP Переспрямовуванням із використанням дескрипторів файлів, номер яких перевищує 9, слід користуватися із обережністю, оскільки вони можуть конфліктувати із дескрипторами, які оболонка використовує на внутрішньому рівні. .SS "Переспрямування введення" Переспрямування вхідних даних призведе до того, що файл, назва якого є результатом розгортання \fIслова\fP, буде відкрито для читання на дескрипторі файла \fIn\fP або на стандартному введенні (файла з дескриптором 0), якщо \fIn\fP не вказано. .PP Загальний формат для переспрямування вводу такий: .RS .PP [\fIn\fP]\fB<\fP\fIслово\fP .RE .SS "Переспрямування виведення" Переспрямування виведених даних призведе до того, що файл, назва якого є результатом розгортання \fIслова\fP, буде відкрито для читання на дескрипторі файла \fIn\fP або на стандартному виведенні (файла з дескриптором 1), якщо \fIn\fP не вказано. Якщо файла не існує, його буде створено; якщо він існує, його буде обрізано до нульового розміру. .PP Загальний формат для переспрямування виводу такий: .RS .PP [\fIn\fP]\fB>\fP\fIслово\fP .RE .PP Якщо оператором переспрямування є \fB>\fP і було увімкнено параметр \fBnoclobber\fP вбудованої команди \fBset\fP, спроба переспрямовування завершиться помилкою, якщо файл, назву якого буде визначено шляхом розгортання \fIслова\fP, існує і є звичайним файлом. Якщо оператором переспрямування є \fB>|\fP або оператором переспрямування є \fB>\fP і не увімкнено параметр \fBnoclobber\fP у вбудованій команді \fBset\fP, \fBbash\fP буде виконано спробу пересрямовування, навіть якщо файл із назвою, яку отримано розгортанням \fIслова\fP, існує. .SS "Дописування переспрямованого виведення" Переспрямування виведення у цей спосіб призведе до того, що файл, назва якого є результатом розгортання \fIслова\fP, буде відкрито для дописування на дескрипторі файла \fIn\fP або на стандартному виведенні (файла з дескриптором 1), якщо \fIn\fP не вказано. Якщо файла не існує, його буде створено. .PP Загальним форматом для дописування виведення є такий: .RS .PP [\fIn\fP]\fB>>\fP\fIслово\fP .RE .SS "Переспрямування стандартного виводу та стандартних помилок" Ця конструкція переспрямовує стандартне виведення (дескриптор файла 1), і стандартне виведення помилок (дескриптор файла 2) до файла, чиєю назвою є розгортання слова \fIслово\fP. .PP Існує два формати переспрямування стандартного виводу та стандартних помилок: .RS .PP \fB&>\fP\fIслово\fP .RE і .RS \fB>&\fP\fIслово\fP .RE .PP З двох форм пріоритетною є перша. Семантично це еквівалентно до .RS .PP \fB>\fP\fIслово\fP 2\fB>&\fP1 .RE .PP Якщо використано другу форму, \fIслово\fP не зможе розгорнутися до числа або \fB\-\fP. Якщо воно розгортається, з міркувань сумісності застосовуються інші оператори переспрямовування (див. \fBДублювання дескрипторів файлів\fP). .SS "Дописування стандартного виводу та стандартних помилок" Ця конструкція дописує і до стандартного виведення (дескриптор файла 1), і до стандартного виведення помилок (дескриптор файла 2) до файла, чиєю назвою є розгортання слова \fIслово\fP. .PP Форматуванням для дописування стандартного виведення і стандартного виведення помилок є таке форматування: .RS .PP \fB&>>\fP\fIслово\fP .RE .PP Семантично це еквівалентно до .RS .PP \fB>>\fP\fIслово\fP 2\fB>&\fP1 .RE .PP (див. \fBДублювання дескрипторів файлів\fP нижче). .SS "Контекстні документи" Цей тип переспрямовування вказує оболонці, що слід прочитати вхідні дані з поточного джерела, аж до рядка, що містить лише \fIроздільник\fP (без кінцевих пропусків). Згодом, як стандартне джерело вхідних даних (або дескриптор файла \fIn\fP, якщо вказано \fIn\fP) для команди буде використано усі рядки аж до цієї позиції. .PP Формат контекстних документів: .RS .PP .nf [\fIn\fP]\fB<<\fP[\fB\-\fP]\fIслово\fP \fIконтекстний документ\fP \fIроздільник\fP .fi .RE .PP Оболонка не виконує розгортання параметрів та змінних, підставляння команд, арифметичного розгортання або розгортання шляхів для \fIслова\fP. .PP Якщо якусь частину слова \fIслово\fP взято у лапки, \fIроздільником\fP буде результат вилучення лапок зі \fIслова\fP, а рядки контекстного документа не розгортатимуться. Якщо \fIслово\fP не буде взято у лапки, \fIроздільник\fP сам є \fIсловом\fP, і сам текст документа буде оброблено подібно до рядка у подвійних лапках: в усіх рядках контекстного документа виконуватиметься розгортання параметрів, заміни команд та арифметичні обчислення, послідовність символів \fB\e<новий рядок>\fP буде оброблено буквально, а для нейтралізації символів \fB\e\fP, \fB$\fP і \fB\`\fP слід використовувати \fB\e\fP; втім, символи у подвійних лапках не матимуть спеціального значення. .PP Якщо оператором переспрямовування є \fB<<\-\fP, з вхідних рядків буде прибрано початкові табуляції та рядки, що містять \fIроздільник\fP. Це уможливлює належні відступи у рядках контекстного документа у скриптах оболонки. .PP Якщо роздільник не взято в лапки, послідовність \fB\e\fP розглядається як продовження рядка: два рядки з'єднуються, а зворотна похилу риску із символом нового рядка буде вилучено. Це відбувається під час читання документа, перед перевіркою кінцевого роздільника, тому з'єднані рядки можуть утворювати кінцевий роздільник. .SS "Контекстні рядки" Варіант контекстних документів. Форматування: .RS .PP .nf [\fIn\fP]\fB<<<\fP\fIслово\fP .fi .RE .PP \fIСлово\fP підлягає розгортанню тильди, розгортанню параметрів і змінних, заміні команд, арифметичним обчисленням та вилученню нейтралізації. Розгортання шляхів і поділ на слова не виконуватимуться. Результат буде надано як єдиний рядок із додаванням наприкінці символу нового рядка до команди у її стандартне джерело вхідних даних (або у файл з дескриптором \fIn\fP, якщо вказано \fIn\fP). .SS "Дублювання дескрипторів файлів" Оператор переспрямовування .RS .PP [\fIn\fP]\fB<&\fP\fIслово\fP .RE .PP використовують для дублювання дескрипторів файлів вхідних даних. Якщо \fIслово\fP розгортається до однієї або декількох цифр, дескриптор файла із позначенням \fIn\fP стане копією цього дескриптора файла. Якщо цифри у \fIслові\fP не задають дескриптор файла, який відкрито для введення даних, станеться помилка переспрямування. Якщо обчисленим значенням \fIслова\fP є \fB\-\fP, дескриптор файла \fIn\fP буде закрито. Якщо \fIn\fP не вказано, буде використано стандартне джерело вхідних даних (файл із дескриптором 0). .PP Оператор .RS .PP [\fIn\fP]\fB>&\fP\fIслово\fP .RE .PP використовують у подібний спосіб для дублювання дескрипторів файлів виведення. Якщо не вказано \fIn\fP, буде використано стандартне виведення (файл із дескриптором 1). Якщо цифри у \fIслові\fP не задають дескриптора файла, який відкрито для виведення, станеться помилка переспрямування. Якщо обчисленим значенням \fIслова\fP є \fB\-\fP, файл із дескриптором \fIn\fP буде закрито. У особливому випадку, якщо не вказано \fIn\fP, і розгортанням \fIслова\fP не є одна або декілька цифр або \fB\-\fP, стандартне виведення і стандартне виведення помилок буде переспрямовано у описаний раніше спосіб. .SS "Пересування дескрипторів файлів" Оператор переспрямовування .RS .PP [\fIn\fP]\fB<&\fP\fIцифра\fP\fB\-\fP .RE .PP пересуває дескриптор файла \fIцифра\fP до дескриптора файла \fIn\fP або стандартного джерела вхідних даних (дескриптор файла 0), якщо \fIn\fP не вказано. \fIцифра\fP буде закрито після дублювання до \fIn\fP. .PP Так само, оператор переспрямовування .RS .PP [\fIn\fP]\fB>&\fP\fIцифра\fP\fB\-\fP .RE .PP пересуває дескриптор файла \fIцифра\fP до дескриптора файла \fIn\fP або стандартного виведення (дескриптор файла), якщо \fIn\fP не вказано. .SS "Відкриття дескрипторів файлів для читання і запису" Оператор переспрямовування .RS .PP [\fIn\fP]\fB<>\fP\fIслово\fP .RE .PP спричиняє відкриття файла, чия назва визначається розгортанням слова \fIслово\fP, для читання і запису на дескрипторі файла \fIn\fP або відкриття дескриптора файла 0, якщо \fIn\fP не вказано. Якщо файла не існує, його буде створено. .SH АЛЬТЕРНАТИВИ За допомогою \fIальтернатив\fP можна замінити рядок на слово, якщо рядок використано як перше слово простої команди. В оболонці передбачено список альтернатив, які можна встановити або скасувати за допомогою вбудованих команд \fBalias\fP і \fBunalias\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .PP Якщо оболонка зчитує слово без лапок у правильній позиції, вона перевіряє, чи відповідає воно альтернативній назві. Якщо збіг встановлено, оболонка замінює слово значенням альтернативи та зчитує це значення так, ніби його було прочитано замість слова. Оболонка не перевіряє жодні символи після слова, перш ніж спробувати підставити альтернативну назву. .PP У назві альтернативи не можна використовувати символи \fB/\fP, \fB$\fP, \fB\`\fP та \fB=\fP, а також будь\-які \fIметасимволи\fP або оболонки або символи нейтралізації, список яких наведено вище. Текст заміни може містити будь\-які коректні вхідні дані оболонки, зокрема метасимволи оболонки. Перше слово тексту заміни буде перевірено на належність до альтернатив, але слово, яке збігається із альтернативою, яка розгортається, не буде розгорнуто вдруге. Це означає, що можна, наприклад, використати альтернативу \fBls\fP для \fBls \-F\fP, і \fBbash\fP не намагатиметься рекурсивно розгортати текст заміни. .PP Якщо останній символ значення альтернативи є \fIпропуском\fP, наступне слово команди за альтернативою також буде перевірено на можливість розгортання альтернативи. .PP Альтернативи можна створити або переглянути за допомогою команди \fBalias\fP. Вилучити альтернативи можна за допомогою команди \fBunalias\fP. .PP Механізму використання аргументів у тексті заміни не передбачено. Якщо потрібні аргументи, скористайтеся замість нього функцією оболонки (див. .SM \fBФУНКЦІЇ\fP нижче). .PP Розгортання альтернатив не виконуватиметься для неінтерактивної оболонки, якщо не встановлено параметра оболонки \fBexpand_aliases\fP за допомогою \fBshopt\fP (див. опис \fBshopt\fP у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .PP Правила, які стосуються визначення і використання альтернатив, є дещо заплутаними. \fBBash\fP завжди читає принаймні один повний рядок вхідних даних і усі рядки, з яких складається складена команда, перш ніж виконувати будь\-яку команду у цьому рядку або складену команду. При читанні, а не при виконанні, команди альтернативи буде розгорнуто. Тому визначення альтернативи у тому самому рядку, що і інша команда, не працюватиме до читання наступного рядка вхідних даних, а визначення альтернативи у складеній команді не працюватимуть до моменту обробки і виконання оболонкою усієї команди. Нові альтернативи не буде використано у командах, які слідують за визначенням альтернативи в одному рядку або у решті складеної команди. Така поведінка може також стати проблемою при виконанні функцій. Розгортання альтернатив відбуватиметься при читанні визначення функцій, а не при виконанні функцій, оскільки визначення функції саме є командою. Як наслідок, альтернативи, які визначено у функції, є недоступними до виконання цієї функції. Щоб уникнути проблем, завжди визначайте альтернативи в окремому рядку і не використовуйте \fBalias\fP у складених командах. .PP Майже усюди слід віддавати перевагу перед альтернативами функціям оболонки. .SH ФУНКЦІЇ У функції оболонки, яку визначено у описаний вище у розділі .SM \fBГРАМАТИКА ОБОЛОНКИ\fP спосіб, зберігається послідовність команд, яку можна будь\-коли виконати. Якщо використати назву функції як назву простої команди, оболонкою буде виконано список команд, які пов'язано із цією функцією. Функції буде виконано у контексті оболонки виклику; система не створюватиме процес для їхньої обробки (на відміну від виконання скрипту оболонки). .PP Під час виконання функції аргументами будуть позиційні параметра на момент виконання. Для відтворення зміни буде оновлено спеціальний параметр \fB#\fP. Спеціальний параметр \fB0\fP лишиться незмінним. Для першого елемента змінної .SM \fBFUNCNAME\fP на час виконання функції буде встановлено значення назви функції. .PP Усі інші аспекти середовища виконання оболонки є однаковими для функції і скрипту, з якого її викликано, із такими винятками: пастки .SM \fBDEBUG\fP і \fBRETURN\fP (див. опис вбудованої команди \fBtrap\fP у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче) не буде успадковано, якщо функції не передано атрибут \fBtrace\fP (див. опис вбудованої команди .SM \fBdeclare\fP нижче) або не буде увімкнено параметр оболонки \fB\-o functrace\fP за допомогою вбудованої команди \fBset\fP (у цьому випадку усі функції успадкують пастки \fBDEBUG\fP і \fBRETURN\fP), а пастку .SM \fBERR\fP не буде успадковано, якщо не увімкнено параметр оболонки \fB\-o errtrace\fP. .PP Змінні, локальні для функції, оголошують за допомогою вбудованої команди \fBlocal\fP (\fIлокальні змінні\fP). Зазвичай змінні та їх значення спільні між функцією та її викликачем. Якщо змінну було оголошено як \fBlocal\fP, область видимості змінної буде обмежено відповідною функцією та її дочірніми (включно із функціями, які вона викликає). .PP У наведеному нижче описі \fIпоточною областю видимості\fP є функція, виконання якої відбувається у поточний момент часу Попередні області видимості складаються з функції, з якої викликано цю функцію, та попередніх функцій у стосі викликів, аж до .Q global області видимості, де оболонка не виконує жодної функції оболонки. Локальною змінною у поточній області видимості є змінна, яку оголошено за допомогою вбудованих команд \fBlocal\fP або \fBdeclare\fP у функції, виконання якої відбувається у поточний момент. .PP Локальні змінні .Q shadow Локальні змінні «затіняють» змінні із тими самими назвами, які оголошено у попередніх областях видимості. Наприклад, локальна змінна, яку оголошено у функції, приховує змінну із тією самою назвою, яку оголошено у попередніх областях, зокрема загальні змінні: посилання та встановлення значень стосуватимуться локальної змінної, а загальна змінні у попередніх областях видимості лишаться незмінними. При поверненні з функції загальна змінна знову стає видимою. .PP Оболонка використовує \fIдинамічне визначення областей видимості\fP для керування видимістю змінних у функціях. При динамічному визначенні перелік видимих змінних та їхні значення є результатом послідовності викликів функцій, яка спричинила досягнення у процесі виконання поточної функції. Значення змінної, яке бачить функція, залежить від її значення у місці виклику, якщо таке визначено, того, перебуває місце виклику у «загальній» області видимості чи у іншій функції оболонки. Також, це значення, яке «затіняє» локальне оголошення змінної, і значення, яке відновлено при поверненні з функції. .PP Наприклад, якщо змінну \fIзмінна\fP оголошено як локальну у функції \fIфункція1\fP, і функція \fIфункція1\fP викликає іншу функцію \fIфункція2\fP, посилання на \fIзмінна\fP, які використано у \fIфункція2\fP, дадуть локальну змінну \fIзмінна\fP з \fIфункція1\fP, яка затіняє будь\-яку загальну змінну із назвою \fIзмінна\fP. .PP Вбудована команда \fBunset\fP також працює з використанням тієї самої динамічної області видимості: якщо змінна є локальною для поточної області видимості, \fBunset\fP скасує встановлення значення для неї; якщо ж ні, скасування значення стосуватиметься змінної, яку виявлено у будь\-якій області видимості, звідки викликано функцію, як це описано вище. Якщо значення змінної у поточній локальній області видимості не встановлено, нічого не зміниться (виглядатиме як невстановлена), аж доки значення у відповідній області видимості не буде встановлено або не буде виконано повернення з функції. Щойно буде виконано повернення з функції, будь\-який екземпляр змінної у попередній області видимості стане видимим. Якщо скасування встановлення значення спрацює для змінної у попередній області видимості, будь\-який екземпляр змінної із тією самою назвою, який було затінено, стане знову видимим (див. нижче щодо того, як змінна оболонки \fBlocalvar_unset\fP змінює цю поведінку). .PP Змінна .SM \fBFUNCNEST\fP, якщо встановлено числове додатне значення, визначає максимальний рівень вкладеності функцій. Виклики функцій, у яких перевищено обмеження, призводять до аварійного завершення виконання усієї команди. .PP Якщо у функції буде виконано вбудовану команду \fBreturn\fP, виконання функції буде завершено і оболонка перейде до виконання наступної після виклику функції команди. Якщо \fBreturn\fP має числовий аргумент, це стан повернення функції; інакше стан повернення функції дорівнює стану виходу останньої команди, виконаної перед \fBreturn\fP. Перед поновленням виконання буде виконано усі команди, які пов'язано із пасткою \fBRETURN\fP. Під час завершення роботи функції буде відновлено значення, які мали перед виконанням функції усі позиційні параметри та особливий параметр \fB#\fP. .PP Отримати список назв і визначень функцій можна за допомогою параметра \fB\-f\fP вбудованих команд \fBdeclare\fP і \fBtypeset\fP. Використання параметра \fB\-F\fP вбудованих команд \fBdeclare\fP і \fBtypeset\fP призведе до виведення списку лише назв функцій (і, необов'язково, файла\-джерела та номера рядка, якщо увімкнено параметр оболонки \fBextdebug\fP). Функції можна експортувати так, щоб їх було автоматично визначено у дочірніх процесах оболонки (процесах, які створено під час виконання окремих викликів оболонки), — скористайтеся параметром \fB\-f\fP вбудованої команди \fBexport\fP. Визначення функції можна вилучити за допомогою параметра \fB\-f\fP вбудованої команди \fBunset\fP. .PP Функції можуть бути рекурсивними. Для обмеження глибини стека викликів функції та кількості викликів функцій можна скористатися змінною \fBFUNCNEST\fP. Типово, обмежень на кількість рекурсивних викликів у \fBbash\fP не накладається. .SH "АРИФМЕТИЧНЕ ОЦІНЮВАННЯ" Оболонка, за певних умов, уможливлює арифметичні обчислення за певних обставин (див. вбудовані команди \fBlet\fP і \fBdeclare\fP, складену команду \fB((\fP, арифметичну команду \fBfor\fP, команду умови \fB[[\fP та \fBАрифметичні обчислення\fP). .PP Обчислення буде виконано у цілих числах найширшого типу із фіксованою шириною без перевірок на переповнення, хоча ділення на 0 буде перехоплено із повідомленням про помилку. Оператори, їхня пріоритетність, асоціативність та значення є тими самими, що і у мові C. Нижче наведено список операторів, які згруповано за рівнями рівної пріоритетності. Рівні у списку впорядковано за спаданням пріоритетності. .PP .PD 0 .TP \fIid\fP\fB++ \fP\fIid\fP\fB\-\-\fP післяінкремент і післядекремент змінної .TP \fB++\fP\fIідентифікатор\fP\fB \-\-\fP\fIідентифікатор\fP доінкремент та додекремент змінної .TP \fB\- +\fP унарні мінус та плюс .TP \fB! \*~\fP логічне та порозрядне заперечення .TP \fB**\fP піднесення до степеня .TP \fB* / %\fP множення, ділення, залишок ділення .TP \fB+ \-\fP додавання, віднімання .TP \fB<< >>\fP лівий та правий порозрядний зсув .TP \fB<= >= < >\fP порівняння .TP \fB== !=\fP рівність та нерівність .TP \fB&\fP бітова «І» .TP \fB\*^\fP порозрядне виключне АБО .TP \fB|\fP бітове «АБО» .TP \fB&&\fP логічне «І» .TP \fB||\fP логічне «АБО» .TP \fIexpr\fP\fB?\fP\fIexpr\fP\fB:\fP\fIexpr\fP умовний оператор .TP \fB= *= /= %= += \-= <<= >>= &= \*^= |=\fP присвоювання .TP \fIexpr1\fP\fB , \fP\fIexpr2\fP кома .PD .PP Змінні оболонки можна використовувати як операнди; буде виконано розгортання параметрів до обчислення виразу. У виразі на змінні оболонки можна посилатися за назвою без використання синтаксису розгортання параметрів. Це означає, що ви можете використовувати «x», де \fIx\fP — це назва змінної оболонки,в арифметичному виразі, і оболонка обчислить його значення як вираз і використає результат. Замість змінної оболонки, яка має порожнє значення або не встановлена, буде використано 0, якщо посилання на неї за назвою буде використано у виразі. .PP Значення змінної буде обчислено як арифметичний вираз при посиланні на неї, або коли змінній, якій було надано атрибут \fIinteger\fP за допомогою \fBdeclare \-i\fP буде надано значення. Порожнє значення відповідає 0. Для використання у виразі для змінної оболонки не обов'язково має бути увімкнено атрибут \fIinteger\fP. .PP Цілі сталі має бути визначено з використанням синтаксису визначення мови C без суфіксів або символьних сталих. Сталі з початковим 0 буде оброблено як вісімкові числа. Початковий рядок 0x або 0X позначає шістнадцяткове число. У всіх інших випадках, числа записують у формі [\fIоснова#\fP]n, де необов'язковою частиною \fIоснова\fP є десяткове число від 2 до 64, яке означає основу числення, а \fIn\fP — число у цій основі числення. Якщо рядок \fIоснова#\fP не вказано, буде використано основу числення 10. При заданні \fIn\fP, якщо треба використати цифри, які не є десятковими, цифри після 9 слід вказувати як малі літери, великі літери, @ і _, саме у такому порядку. Якщо \fIоснова\fP є числом, яке менше або рівне 36, можна використовувати як малі, так і великі літери для позначення цифр зі значеннями від 10 до 35. .PP Виконання операторів відбувається за пріоритетністю. Підвирази у дужках буде обчислено першими. Виразами у дужках можна скористатися для зміни описаних вище правил пріоритетності. .SH "УМОВНІ ВИРАЗИ" Умовні вирази використовують у складених командах \fB[[\fP та вбудованих командах \fBtest\fP і \fB[\fP для перевірки атрибутів файла і виконання рядкових і арифметичних порівнянь. Поведінка команд \fBtest\fP і \fB[\fP визначається кількістю їхніх аргументів; див. опис цих команд, щоб дізнатися про інші, специфічні для них, дії. .PP Вирази формуються з унарних або бінарних основ, перелічених нижче. Унарні вирази часто використовуються для перевірки стану файла або змінної оболонки. Бінарні оператори використовуються для порівняння рядків, чисел та атрибутів файлів. .PP \fBBash\fP handles several filenames specially when they are used in expressions. If the operating system on which \fBbash\fP is running provides these special files, bash will use them; otherwise it will emulate them internally with this behavior: If any \fIfile\fP argument to one of the primaries is of the form .FN /dev/fd/n , then \fBbash\fP checks file descriptor \fIn\fP. If the \fIfile\fP argument to one of the primaries is one of .FN /dev/stdin , .FN /dev/stdout , or .FN /dev/stderr , \fBbash\fP checks file descriptor 0, 1, or 2, respectively. .PP Якщо про це окремо не зауважено, у базових частинах, які працюють з файлами, буде виконано перехід за символічними посиланнями та оброблено файл, на який виконано посилання, а не саме посилання. .PP Якщо використано \fB[[\fP або якщо оболонка працює у режимі posix, оператори \fB<\fP і \fB>\fP лексикографічно упорядковуватимуться з використанням порядку поточної локалі. Якщо оболонка не працює у режимі posix, команда \fBtest\fP упорядковує за порядком символів в ASCII. .PP .PD 0 .TP \fB\-a \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує. .TP \fB\-b \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є спеціальним блоковим файлом. .TP \fB\-c \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є спеціальним символьним файлом. .TP \fB\-d \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є каталогом. .TP \fB\-e \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує. .TP \fB\-f \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є звичайним файлом. .TP \fB\-g \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і має встановленим біт групи. .TP \fB\-h \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є символічною ланкою. .TP \fB\-k \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і встановлено біт .Q sticky \&. .TP \fB\-p \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є іменованим каналом (FIFO). .TP \fB\-r \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є придатним до читання. .TP \fB\-s \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і має ненульовий розмір. .TP \fB\-t \fP\fIдескриптор_файла\fP Істина, якщо дескриптор файлу \fIдескриптор_файла\fP відкритий і вказує на термінал. .TP \fB\-u \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і має встановленим біт встановити\-ІД\-користувача. .TP \fB\-w \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і в нього можна писати. .TP \fB\-x \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є виконуваним. .TP \fB\-G \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і його власником є чинний ІД групи. .TP \fB\-L \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є символічною ланкою. .TP \fB\-N \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує та був змінений після останнього доступу. .TP \fB\-O \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і його власником є чинний ІД користувача. .TP \fB\-S \fP\fIфайл\fP Істина, якщо \fIфайл\fP існує і є сокетом. .TP \fB\-o \fP\fIназва_параметра\fP Істина, якщо увімкнено параметр оболонки \fIназва_параметра\fP. Див. список параметрів під описом параметра \fB\-o\fP вбудованої команди \fBset\fP нижче. .TP \fB\-v \fP\fIназва змінної\fP True, якщо встановлено змінну оболонки \fIназва_змінної\fP ​​(їй було надано значення). Якщо \fIназва_змінної\fP — це індексована змінна масиву з індексом \fI@\fP або \fI*\fP, буде повернуто true, якщо масив має будь\-які елементи зі встановленим значенням. Якщо \fIназва_змінної\fP — це асоціативна змінна масиву з індексом \fI@\fP або \fI*\fP, буде повернуто true, якщо значення елемента із цим ключем встановлено. .TP \fB\-R \fP\fIназва_змінної\fP Істина, якщо змінну оболонки \fIназва_змінної\fP встановлено і вона є посиланням на назву. .TP \fB\-z \fP\fIрядок\fP Істина, якщо довжина рядка \fIрядок\fP є нульовою. .TP \fIрядок\fP .TP \fB\-n \fP\fIрядок\fP Істина, якщо довжина рядка \fIрядок\fP є ненульовою. .PD .TP \fIрядок1\fP \fB==\fP \fIрядок2\fP .PD 0 .TP \fIрядок1\fP \fB=\fP \fIрядок2\fP Істина, якщо рядки є однаковими. Для сумісності із .SM POSIX слід використовувати \fB=\fP у команді \fBtest\fP. Якщо використано із командою \fB[[\fP, буде виконано встановлення відповідності взірцю, як це описано вище (\fBскладені команди\fP). .TP \fIрядок1\fP \fB!=\fP \fIрядок2\fP Істина, якщо рядки не є рівними. .TP \fIрядок1\fP \fB<\fP \fIрядок2\fP Істина, якщо \fIрядок1\fP стоїть вище за \fIрядок2\fP при лексикографічному упорядковуванні. .TP \fIрядок1\fP \fB>\fP \fIрядок2\fP Істина, якщо \fIрядок1\fP стоїть нижче за \fIрядок2\fP при лексикографічному упорядковуванні. .PD .TP .PD 0 \fIфайл1\fP \fB\-ef\fP \fIфайл2\fP Істина, якщо \fIфайл1\fP і \fIфайл2\fP є посиланнями на той самий пристрій або номер inode. .TP \fIфайл1\fP \-\fBnt\fP \fIфайл2\fP Істина, якщо \fIфайл1\fP є новішим (за даною внесених змін) за \fIфайл2\fP, або якщо \fIфайл1\fP існує, а \fIфайл2\fP — ні. .TP \fIфайл1\fP \-\fBot\fP \fIфайл2\fP Істина, якщо \fIфайл1\fP є старішим за \fIфайл2\fP, або якщо \fIфайл2\fP існує, а \fIфайл\fP — ні. .PD .TP \fIаргумент1 \fP\fBOP\fP\fI аргумент2\fP .SM \fBOP\fP є одним із таких операторів: \fB\-eq\fP, \fB\-ne\fP, \fB\-lt\fP, \fB\-le\fP, \fB\-gt\fP або \fB\-ge\fP. Ці арифметичні бінарні оператори повертаю значення «істина», якщо \fIаргумент1\fP є рівним, не рівним, меншим, меншим або рівним, більшим або більшим або рівним за \fIаргумент2\fP, відповідно. \fIАргумент1\fP і \fIаргумент2\fP мають бути додатними або від'ємними цілими числами. При використанні у команді \fB[[\fP, \fIаргумент1\fP і \fIаргумент2\fP буде обчислено як арифметичні вираз (див. .SM \fBАРИФМЕТИЧНІ ОБЧИСЛЕННЯ\fP вище). Оскільки розгортання, яке виконує команда \fB[[\fP над \fIаргументом1\fP та \fIаргументом2\fP, потенційно може призвести до порожніх рядків, арифметичне обчислення виразів розглядає такі вирази як вирази, що дорівнюють 0. .PD .SH "РОЗГОРТАННЯ ПРОСТИХ КОМАНД" При виконання простих команд оболонка виконує вказані нижче розгортання, встановлення значень та переспрямування, зліва праворуч, у вказаному нижче порядку. .IP 1. Слова, які обробник позначив як надання змінним значень (які передують назві команди), і переспрямування буде збережено для подальшої обробки. .IP 2. Слова, які не є встановленнями значень змінних або переспрямуваннями буде розгорнуто. Якщо після розгортання лишаться якісь слова, перше слово вважатиметься назвою команди, а решта слів — її аргументами. .IP 3. Переспрямовування виконуватиметься так, як це описано вище у розділі .SM \fBПЕРЕСПРЯМУВАННЯ\fP. .IP 4. Текст після \fB=\fP у всіх встановленнях значень змінної підлягає розгортанню тильди, розгортанню параметрів, заміні команд, арифметичним обчисленням та вилученню нейтралізації, перш ніж його буде призначено до зміннної. .PP Якщо назви команди не отримано, присвоєння значень змінним впливають на поточне середовище оболонки. У випадку такої команди (яка складається лише з інструкцій надання значення та переспрямувань), інструкції з надання значень буде виконано перед переспрямуваннями. В іншому випадку змінні додаються до середовища виконуваної команди і не впливають на поточне середовище оболонки. Якщо будь\-яке з присвоєнь намагається присвоїти значення змінній лише для читання, виникає помилка, і команда завершується із ненульовим станом. .PP Якщо назви команди не отримано, перенаправлення виконуються, але не впливають на поточне середовище оболонки. Помилка переспрямування призводить до завершення команди з ненульовим станом. .PP Якщо після розширення залишилася назва команди, виконання продовжується, як описано нижче. В іншому випадку команда завершується. Якщо одне з розширень містило заміну команди, стан виходу команди такий, як стан виходу останньої виконаної заміни команди. Якщо заміни команд не було, команда виходить зі станом нуль. .SH "ВИКОНАННЯ КОМАНД" Після поділу команди на слова, якщо результат є простою командою і необов'язковим списком аргументів, оболонка виконає описані нижче дії. .PP Якщо назва команди не містить похилих рисок, оболонка намагається знайти її. Якщо існує функція оболонки з такою назвою, ця функція викликається, як описано вище в .SM \fBФУНКЦІЇ\fP. Якщо назва не відповідає функції, оболонка шукає її у списку вбудованих команд оболонки. Якщо збіг знайдено, буде викликано цю вбудовану команду. .PP Якщо назва не є ні функцією оболонки, ні вбудованою командою, і не містить похилих рисок, \fBbash\fP шукає серед елементів .SM \fBPATH\fP каталог, що містить виконуваний файл з такою назвою. \fBBash\fP для запам'ятовування повних назв виконуваних файлів використовує геш\-таблицю (див. нижче \fBгеш\fP під заголовком .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP). Повний пошук у каталогах із .SM \fBPATH\fP виконується лише тоді, коли команду не знайдено в геш\-таблиці. Якщо пошук невдалий, оболонка шукає визначену функцію оболонки під назвою \fBcommand_not_found_handle\fP. Якщо така функція існує, вона викликається в окремому середовищі виконання, отримавши, як аргументи, початкову команду та її аргументи, а стан виходу функції стає станом виходу цієї підоболонки. Якщо цю функцію не визначено, оболонка друкує повідомлення про помилку та повертає стан виходу 127. .PP Якщо пошук пройшов успішно, або якщо назва команди містить одну чи кілька похилих рисок, оболонка виконує названу програму в окремому середовищі виконання. Аргумент 0 стає рівним зазначеній назві, а решта аргументів команди — наданим аргументам, якщо такі є. .PP Якщо це виконання не вдається, оскільки файл не виконуваного формату і не є каталогом, вважається, що це \fIскрипт оболонки\fP, файл, що містить команди оболонки, і оболонка створює новий екземпляр самої себе для виконання. Bash намагається визначити, є файл текстовим чи двійковим, і не виконує файлів, які буде визначено як двійкові. Ця підоболонка повторно ініціалізується, так що результат виглядає так, ніби для обробки скрипту викликано нову оболонку, за винятком того, що розташування команд, які запам'ятав предок (див. нижче \fBгеш\fP під заголовком .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP), зберігає нащадок. .PP Якщо програма є файлом, що починається з \fB#!\fP, залишок першого рядка визначає інтерпретатор для програми. Оболонка виконує зазначений інтерпретатор в операційних системах, які самі не обробляють файлів цього виконуваного формату. Аргументами інтерпретатора є один необов’язковий аргумент після назви інтерпретатора в першому рядку програми, за яким йде назва програми, а потім \- аргументи команди, якщо такі є. .SH "СЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД" Оболонка має \fIсередовище виконання\fP, яке складається з таких компонентів: .IP \(bu Відкриті файли, які успадковано оболонкою на момент виклику із модифікаціями з використанням переспрямувань, які передано вбудованій команді \fBexec\fP .IP \(bu Поточний робочий каталог, який встановлено командами \fBcd\fP, \fBpushd\fP або \fBpopd\fP чи успадковано оболонкою на момент виклику. .IP \(bu Маска режиму створення файлів, яку встановлено за допомогою \fBumask\fP або успадковано від батьківського процесу оболонки. .IP \(bu Поточні пастки, які встановлено за допомогою \fBtrap\fP. .IP \(bu Параметри оболонки, які встановлено наданням значень змінним або за допомогою команди \fBset\fP чи успадковано від батьківського процесу оболонки у середовищі. .IP \(bu Функції оболонки, які визначено під час виконання або успадковано від батьківського процесу оболонки у середовищі. .IP \(bu Параметри, які увімкнено на момент виклику (типово або за допомогою аргументів рядка команди) або встановлено за допомогою команди \fBset\fP. .IP \(bu Параметри, які вмикають за допомогою \fBshopt\fP. .IP \(bu Альтернативи оболонки, які визначено за допомогою \fBalias\fP. .IP \(bu Ідентифікатори різноманітних процесів, зокрема процесів фонових завдань, значення \fB$$\fP і значення .SM \fBPPID\fP. .PP Коли виконується проста команда, відмінна від вбудованої команди або функції оболонки, її викликають в окремому середовищі виконання, яке складається із описаних нижче компонентів. Якщо це не вказано окремо, значення успадковуються від оболонки. .IP \(bu Відкриті файли оболонки разом із усіма змінами і додаваннями, які визначено переспрямуваннями команди. .IP \(bu Поточна робоча тека. .IP \(bu Маска режиму створення файлів. .IP \(bu Змінні оболонки і функції, які позначено для експортування, разом зі змінними, які експортовано для команди, які передано у середовищі. .IP \(bu Пастки, перехоплені оболонкою, скидаються до значень, успадкованих від батьківської оболонки, а пастки, знехтувані оболонкою, нехтуються. .PP Команда, яку викликано у цьому окремому середовищі, не може впливати на середовище виконання оболонки. .PP \fIПідоболонка\fP є копією процесу оболонки. .PP Заміна команд, команди, згруповані в дужках, і асинхронні команди викликаються в середовищі підоболонки, яке є дублікатом середовища оболонки, за винятком того, що пастки, перехоплені оболонкою, скидаються до значень, успадкованих оболонкою під час виклику від свого предка. Вбудовані команди, які викликаються як частина конвеєра, окрім, можливо, останнього елемента, залежно від значення параметра оболонки \fBlastpipe\fP, також виконуються в середовищі підоболонки. Зміни, внесені в середовище підоболонки, не можуть вплинути на середовище виконання оболонки. .PP Якщо оболонка працює у режимі posix, підоболонки, створені для виконання заміни команд, успадковують значення параметра \fB\-e\fP від батьківської оболонки. Якщо оболонка не працює у режимі posix, \fBbash\fP у таких підоболонках очищає параметр \fB\-e\fP. Див. опис параметра оболонки \fBinherit_errexit\fP нижче, щоб дізнатися, як керувати цією поведінкою, якщо оболонка не працює у режимі POSIX. .PP If a command is followed by a \fB&\fP and job control is not active, the default standard input for the command is the empty file .FN /dev/null . Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. .SH СЕРЕДОВИЩЕ При виклику програми їй буде передано маси рядків, який називається \fIсередовище\fP. Це список пар \fIназва\fP\-\fIзначення\fP у такій формі:\fIназва\fP=\fIvalue\fP. .PP Оболонка надає декілька способів керування середовищем. При виклику оболонка сканує власне середовище і створює параметр для кожної знайденої назви, автоматично позначаючи його для \fIекспортування\fP до дочірніх процесів. Виконувані команди успадковують це середовище. Змінювати середовище додаванням або вилученням параметрів і функцій можна за допомогою команд \fBexport\fP, \fBdeclare \-x\fP і \fBunset\fP. Якщо буде внесено зміни до значення параметра у середовищі, нове значення автоматично стане частиною середовища, замінивши собою старе. Середовище, успадковане будь\-якою виконуваною командою, складається з початкового середовища оболонки, чиї значення може бути змінено в оболонці, без усіх пар, які вилучено командою \fBunset\fP, і з усіма додаванням за допомогою команд \fBunset\fP і \fBexport \-n\fP. .PP Якщо будь\-які надання значення параметрам, як описано вище у розділі щодо .SM \fBPARAMETERS\fP, з'являються перед \fIпростою командою\fP, надання змінним значення є частиною середовища цієї команди, поки вона виконується. Ці оператори надання значень впливають лише на середовище, яке бачить ця команда. Якщо ці надання значень передують виклику функції оболонки, змінні є локальними для функції і експортуються до дочірніх об'єктів цієї функції. .PP Якщо встановлено параметр \fB\-k\fP (див. вбудовану команду \fBset\fP нижче), до середовища команди потраплять \fIусі\fP, а не лише ті, які передують назві команди, надання параметрам значень. .PP Якщо \fBbash\fP викликає зовнішню команду, для змінної \fB_\fP буде встановлено значення повної назви файла команди. Цю змінну також буде передано команді у її середовищі. .SH "СТАН ВИХОДУ" Станом виходу виконуваної команди буде значенням, яке повернуто системним викликом \fIwaitpid\fP або еквівалентною функцією. Діапазоном станів виклику є множина цілих чисел від 0 до 255. Втім, яке це описано нижче, значення, що перевищують 125, можуть використовуватися оболонкою зі спеціальною метою. Значення станів виходу для вбудованих функцій оболонки та складених команд також обмежено цим діапазоном. За певних умов, оболонка використовуватиме спеціальні значення для того, щоб повідомити про певні режим помилок. .PP З точки зору оболонки, команду, яка завершує роботу із нульовим станом виходу, виконано успішно. Отже, нульовий стан виходу вказує на успіх, а ненульовий стан виходу вказує на помилку. .PP Якщо роботу команди завершено із критичним сигналом \fIN\fP, \fBbash\fP використовує як код стану виходу значення 128+\fIN\fP. .PP Якщо певну програму не буде знайдено, дочірній процес, який було створено для її виконання, повертає код стану 127. Якщо програму буде знайдено, але її не можна виконати, кодом стану виходу буде 126. .PP Якщо виконання команди завершується помилкою через помилку під час розгортання або переспрямування, код стану виходу буде більшим за нуль. .PP Вбудовані команди оболонки повертають стан виходу 0 (\fIістина\fP), якщо їх виконано успішно, і ненульовий стан виходу (\fIхибність\fP), якщо під час виконання станеться помилка. Усі вбудовані команди повертають стан виходу 2, якщо потрібно вказати на неправильне використання, — загалом, неправильне визначення параметрів або пропущені аргументи. .PP Доступ до стану виходу останньої команди можна здійснювати за допомогою спеціального параметра $?. .PP Сама оболонка \fBbash\fP повертає стан виходу останньої виконаної команди, якщо не буде виявлено синтаксичної помилки. Якщо помилку буде виявлено, стан виходу буде ненульовим. Див. також опис вбудованої команди \fBexit\fP нижче. .SH СИГНАЛИ Якщо \fBbash\fP працює в інтерактивному режимі і не використано жодних пасток, оболонка ігноруватиме .SM \fBSIGTERM\fP (отже, \fBkill 0\fP не завершує роботи інтерактивної оболонки) і перехоплюватиме та оброблятиме .SM \fBSIGINT\fP (отже, не можна перервати вбудовану команду \fBwait\fP). Якщо \fBbash\fP отримує .SM \fBSIGINT\fP, оболонка виходить з будь\-яких циклів виконання. В усіх випадках \fBbash\fP ігноруватиме .SM \fBSIGQUIT\fP. Якщо задіяно керування завданнями, \fBbash\fP ігноруватиме .SM \fBSIGTTIN\fP, .SM \fBSIGTTOU\fP та .SM \fBSIGTSTP\fP. .PP Вбудована команда \fBtrap\fP змінює обробку сигналів оболонкою, як це описано нижче. .PP Невбудовані команди, які виконує \fBbash\fP, мають обробники сигналів, встановлені на значення, успадковані оболонкою від її предка, якщо \fBtrap\fP не встановлює їхнє ігнорування, і в такому разі дочірній процес також ігноруватиме їх. Коли керування завданнями не діє, асинхронні команди нехтують .SM \fBSIGINT\fP і .SM \fBSIGQUIT\fP на додаток до цих успадкованих обробників. Команди, що виконуються внаслідок підміни команд, нехтують сигнали керування завданнями .SM \fBSIGTTIN\fP, .SM \fBSIGTTOU\fP і .SM \fBSIGTSTP\fP. .PP Типово вихід з оболонки відбувається після отримання .SM \fBSIGHUP\fP. Перед виходом інтерактивна оболонка повторно надсилає .SM \fBSIGHUP\fP усім запущеним або зупиненим завданням. Зупиненим завданням оболонка надсилає .SM \fBSIGCONT\fP, щоб переконатися, що вони отримують .SM \fBSIGHUP\fP (див. .SM \fBJOB CONTROL\fP нижче, щоб дізнатися більше про запуск і зупинення завдань). Щоб оболонка не надсилала сигнал певному завданню, його слід видалити з таблиці завдань вбудованою командою \fBdisown\fP (див. нижче .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP) або позначити, що воно не має отримувати .SM \fBSIGHUP\fP, за допомогою \fBdisown \-h\fP. .PP Якщо параметр оболонки \fBhuponexit\fP встановлено за допомогою \fBshopt\fP, то, коли інтерактивна оболонка для входу завершує роботу, \fBbash\fP надсилає всім завданням .SM \fBSIGHUP\fP. .PP Якщо \fBbash\fP очікує завершення команди і отримує сигнал, для якого встановлено пастку, пастка не буде виконана, доки команда не завершиться. Коли \fBbash\fP очікує на асинхронну команду через вбудовану команду \fBwait\fP, прийняття сигналу, для якого встановлено пастку, призведе до негайного повернення зі вбудованої команди \fBwait\fP зі станом виходу більшим від 128, одразу після чого буде виконано пастку. .PP Якщо керування завдань не увімкнено, і \fBbash\fP очікує на завершення роботи головної команди, оболонка отримує створені клавіатурою сигнали, зокрема .SM \fBSIGINT\fP (зазвичай, породженим \fB^C\fP), які користувачі, зазвичай, мають надсилати команді. Таке трапляється, оскільки оболонка і команда перебувають у тій самі групі процесів, що і термінал, і \fB\*^C\fP надсилає .SM \fBSIGINT\fP усім процесам у цій групі процесів. Оскільки \fBbash\fP не вмикає типово керування завданнями, коли оболонка не є інтерактивною, цей сценарій найчастіше зустрічається в неінтерактивних оболонках. .PP Якщо увімкнено керування завданнями, а \fBbash\fP очікує на завершення команди переднього плану, оболонка не отримує сигнали, які надсилає клавіатура, оскільки вона не перебуває у тій самій групі процесів, що й термінал. Цей сценарій найчастіше зустрічається в інтерактивних оболонках, де \fBbash\fP намагається типово ввімкнути керування завданнями. Див. .SM \fBJOB CONTROL\fP нижче, щоб дізнатися більше про групи процесів. .PP Якщо \fBbash\fP працює без увімкненого керування завданнями і отримує .SM \fBSIGINT\fP під час очікування на завершення основної команди, програма очікує, аж доки основна команда завершить роботу, а потім вирішує, що робити із .SM \fBSIGINT\fP: .IP 1. Якщо виконання команди переривається сигналом .SM \fBSIGINT\fP, \fBbash\fP вважатиме, що користувач також мав намір надіслати .SM \fBSIGINT\fP до оболонки і реагує на .SM \fBSIGINT\fP (наприклад, запускаючи перехоплення .SM \fBSIGINT\fP, виходячи з неінтерактивної оболонки або повертаючись на верхній рівень для читання нової команди). .IP 2. Якщо команда не завершить роботу через надсилання .SM \fBSIGINT\fP, програма обробила .SM \fBSIGINT\fP самостійно і не вважала цей сигнал критичним. У цьому випадку \fBbash\fP також не вважатиме .SM \fBSIGINT\fP критичним сигналом, а припускатиме, що .SM \fBSIGINT\fP було використано як частину звичайної процедури роботи програми (наприклад, emacs використовує його для переривання редагування команд) або його було спеціально відкинуто. Втім, \fBbash\fP запустить будь\-яку пастку, яку встановлено на .SM \fBSIGINT\fP, як програма це робить для будь\-якого іншого сигналу з пасткою, який вона отримує під час очікування на завершення основної команди, для сумісності. .PP Якщо увімкнено керування завданнями, \fBbash\fP не отримує сигнали, які надсилає клавіатура, зокрема .SM \fBSIGINT\fP, поки очікує на команду переднього плану. Інтерактивна оболонка не звертає уваги на .SM \fBSIGINT\fP, навіть якщо в результаті цього команда переднього плану завершується, окрім відмітки стану її завершення. Якщо оболонка не є інтерактивною, і команда переднього плану завершується через .SM \fBSIGINT\fP, \fBbash\fP вдає, що сама отримала .SM \fBSIGINT\fP (сценарій 1 вище), для сумісності. .SH "КЕРУВАННЯ ЗАВДАННЯМИ" \fIКерування завданнями\fP означає можливість вибірково зупиняти (\fIпризупиняти\fP) виконання процесів і продовжувати (\fIпоновлювати\fP) їх виконання пізніше. Користувач зазвичай використовує цю можливість через інтерактивний інтерфейс, що надається разом драйвером терміналу ядра операційної системи та \fBbash\fP. .PP Оболонка асоціює \fIзавдання\fP з кожним конвеєром. Вона зберігає таблицю поточних виконуваних завдань, список яких можна вивести за допомогою команди \fBjobs\fP. Кожне завдання має \fIномер завдання\fP, який \fBjobs\fP показує в дужках. Номери завдань починаються з 1. Коли \fBbash\fP запускає завдання асинхронно (на \fIтлі\fP), буде виведено рядок такого вигляду: .RS .PP [1] 25647 .RE .PP який означає, що це завдання має номер 1 і ID останнього процесу в конвеєрі, пов’язаного з цим завданням 25647. Усі процеси в одному конвеєрі є членами одного завдання. \fBBash\fP використовує абстракцію \fIзавдання\fP як основу для керування завданнями. .PP Для полегшення реалізації інтерфейсу користувача для керування завданнями кожен процес має \fIідентифікатор групи процесів\fP, а операційна система підтримує позначення \fIпоточного ідентифікатора групи процесів термінала\fP. Цей ідентифікатор групи процесів термінала пов'язаний з \fIкерівним терміналом\fP. .PP Процеси, що мають однаковий ідентифікатор групи процесів, називаються частиною однієї й тієї ж \fIгрупи процесів\fP. Учасники групи процесів \fIпереднього плану\fP (процеси, чий ідентифікатор групи процесів дорівнює поточному ідентифікатору групи процесів термінала) отримують генеровані клавіатурою сигнали, такі як .SM \fBSIGINT\fP. Кажуть, що процеси групи процесів переднього плану називають процесами \fIпереднього плану\fP. \fIФонові\fP процеси – це процеси, ідентифікатор групи яких відрізняється від терміналу; такі процеси захищені від сигналів, що генеруються клавіатурою. Лише процесам переднього плану дозволяється читати з або, якщо це вказує користувач за допомогою .Q "stty tostop" , , записувати в термінал. Система надсилає сигнал .SM \fBSIGTTIN (SIGTTOU)\fP фоновим процесам зі спробою читання (запису, якщо діє .Q tostop ) термінала, який, якщо його не перехоплено, призупиняє роботу процесу .PP Якщо операційна система, на якій запущено \fBbash\fP, підтримує керування завданнями, \fBbash\fP надає можливість це робити. Введення символу \fIпризупинення\fP (зазвичай \fB\*^Z\fP, Control\-Z) під час виконання процесу призводить до зупинки цього процесу та повернення керування \fBbash\fP. Введення символу \fIвідкладеного призупинення\fP (зазвичай \fB\*^Y\fP, Control\-Y) призводить до зупинення процесу, коли він намагається прочитати вхідні дані з терміналу, і повернення керування до \fBbash\fP. Потім користувач може маніпулювати станом цього завдання, використовуючи команду \fBbg\fP, щоб продовжити його у фоновому режимі, команду \fBfg\fP, щоб продовжити її на передньому плані, або команду \fBkill\fP, щоб його знищити. Символ призупинення набуває чинності негайно s має додатковий побіжний ефект – відкидання будь\-якого очікуваного виведення та попереднього введення. Щоб примусово зупинити фоновий процес або зупинити процес, не пов'язаний з поточним сеансом термінала, надішліть йому сигнал .SM \fBSIGSTOP\fP за допомогою \fBkill\fP. .PP Існує декілька способів посилання на завдання в оболонці. Символ \fB%\fP впроваджує специфікацію завдання (jobspec). .PP Замість номера завдання \fIn\fP можна використовувати \fB%n\fP. На завдання також можна посилатися за допомогою префікса назви, яку було використано для його запуску, або за допомогою підрядка, який є частиною його рядка команди. Наприклад, \fB%ce\fP посилається на завдання, назва команди якого починається з \fBce\fP. Використання \fB%?ce\fP, з іншого боку, посилається на будь\-яке завдання, що містить рядок \fBce\fP у рядку своєї команди. Якщо префікс або підрядок відповідає кільком завданням, \fBbash\fP повідомляє про помилку. .PP Символи \fB%%\fP та \fB%+\fP посилаються на \fIпоточне завдання\fP оболонки. Одинарний знак % (без супровідної специфікації завдання) також посилається на поточне завдання. \fB%\-\fP посилається на \fIпопереднє завдання\fP. Коли завдання запускається у фоновому режимі, завдання зупиняється на передньому плані або завдання відновлюється у фоновому режимі, воно стає поточним завданням. Завдання, яке було поточним завданням, стає попереднім завданням. Коли поточне завдання завершується, попереднє завдання стає поточним завданням. Якщо є лише одне завдання, \fB%+\fP та \fB%\-\fP можна використовувати для позначення цього завдання. У виведених даних, що стосується завдань (наприклад, виведенні команди \fBjobs\fP), поточне завдання завжди позначається \fB+\fP, а попереднє завдання — \fB\-\fP. .PP Щоб вивести завдання на передній план, можна просто використати його назву: \fB%\fP є синонімом .Q "fg %1" , переводить завдання 1 з фонового режиму у режим переднього плану. Так само, .Q "%1 &" відновлює виконання завдання 1 у фоновому режимі, те саме, що і .Q "bg %1" . .PP Оболонка дізнається відразу, коли завдання змінює стан. Зазвичай, \fBbash\fP очікує, перш ніж сповістити користувача про зміни у стані завдання, щоб не переривати інше виведення, хоча він сповіщатиме про зміни в стані завдання після завершення команди переднього плану у списку, перед виконанням наступної команди у списку. Якщо увімкнено параметр \fB\-b\fP для вбудованої команди \fBset\fP, \fBbash\fP повідомлятиме про зміни у стані негайно. \fBBash\fP виконує будь\-яку пастку на .SM \fBSIGCHLD\fP для кожного дочірнього об'єкта, робота якого переривається. .PP Коли завдання завершується, і \fBbash\fP сповіщає користувача про це, \fBbash\fP вилучає завдання з таблиці. Його не буде показано у виведеному командою \fBjobs\fP списку завдань, але \fBwait\fP повідомлятиме про стан його завершення, якщо як аргумент буде надано ідентифікатор процесу, пов'язаний із завданням. Якщо таблиця порожня, номери завдань починаються з 1. .PP Якщо користувач робить спробу вийти з \fBbash\fP за наявності зупинених завдань (або запущених, якщо параметр оболонки \fBcheckjobs\fP увімкнено за допомогою вбудованої команди \fBshopt\fP), оболонка друкує попередження, і, якщо параметр \fBcheckjobs\fP увімкнено, виводить список завдань та їхні стани. Потім для перевірки їх стану можна скористатись командою \fBjobs\fP. Якщо користувач негайно намагається знову вийти, без проміжних команд, \fBbash\fP не друкує іншого попередження, і завершує будь\-які зупинені завдання. .PP Коли оболонка очікує на завдання або процес із використанням вбудованої команди \fBwait\fP, і увімкнено керування завданнями, \fBwait\fP повернеться, коли завдання змінить стан. Параметр \fB\-f\fP змушує \fBwait\fP, перш ніж повернутися, зачекати на завершення завдання або процесу. .SH ЗАПИТИ За інтерактивного виконання, \fBbash\fP показує первинне запрошення .SM \fBPS1\fP, коли інтерпретатор готовий читати команду, і вторинне запрошення .SM \fBPS2\fP, коли для завершення команди потрібне додаткове введення. .PP \fBBash\fP перевіряє значення масиву \fBPROMPT_COMMAND\fP безпосередньо перед виведенням кожного основного запиту. Якщо встановлено значення будь\-якого елемента з \fBPROMPT_COMMAND\fP і значення не є порожнім, Bash виконує кожне значення в числовому порядку, так, ніби його було введено в командному рядку. \fBBash\fP показує .SM \fBPS0\fP після зчитування команди, але перед її виконанням. .PP \fBBash\fP показує .SM \fBPS4\fP, як описано вище, перед трасуванням кожної команди, якщо увімкнено параметр \fB\-x\fP. .PP \fBBash\fP надає змогу налаштовувати рядки запитів \fBPS0\fP, \fBPS1\fP, \fBPS2\fP та \fBPS4\fP шляхом вставляння певної кількості спеціальних символів, екранованих зворотною похилою рискою, які декодуються наступним чином: .RS .TP \fB\ea\fP Символ дзвінка ASCII (07). .PD 0 .TP \fB\ed\fP Дата у .Q "Weekday Month Date" форматі (приклад: .Q "Tue May 26" ). .TP \fB\eD{\fP\fIформат\fP\fB}\fP \fIФормат\fP передається в \fIstrftime\fP(3), а результат вставляється в рядок запиту; порожній \fIформат\fP призводить до відображення часу для певної локалі. Фігурні дужки потрібні .TP \fB\ee\fP Символ escape в ASCII (033) .TP \fB\eh\fP Назва вузла до першої .Q . . .TP \fB\eH\fP Назва вузла. .TP \fB\ej\fP Кількість завдань, що оболонка зараз ними керує. .TP \fB\el\fP Основа назви файла пристрою термінала оболонки (приклад: .Q ttys0 ). .TP \fB\en\fP Символ розриву рядка. .TP \fB\er\fP Повернення каретки. .TP \fB\es\fP Назва оболонки, основа назви \fB$0\fP (частина після останньої косої риски). .TP \fB\et\fP Поточний час у 24\-годинному форматі ГГ:ХХ:СС. .TP \fB\eT\fP Поточний час у 12\-годинному форматі ГГ:ХХ:СС. .TP \fB\e@\fP Поточний час у 12\-годинному форматі ДП/ПП. .TP \fB\eA\fP Поточний час у 24\-годинному форматі ГГ:ХХ. .TP \fB\eu\fP Назва облікового запису поточного користувача. .TP \fB\ev\fP Версія \fBbash\fP (приклад: 2.00). .TP \fB\eV\fP Випуск \fBbash\fP, версія + рівень модифікації (приклад: 2.00.0) .TP \fB\ew\fP Значення змінної оболонки \fBPWD\fP (\fB$PWD\fP) .SM \fB$HOME\fP скороченим тильдою (використовується значення змінної .SM \fBPROMPT_DIRTRIM\fP). .TP \fB\eW\fP Базова назва \fB$PWD\fP з .SM \fB$HOME\fP, скороченим тильдою. .TP \fB\e!\fP Номер у журналі цієї команди. .TP \fB\e#\fP Номер цієї команди. .TP \fB\e$\fP Якщо ефективним ідентифікатором користувача (UID) є 0, \fB#\fP, інакше \fB$\fP. .TP \fB\e\fP\fInnn\fP Символ, що відповідає вісімковому числу \fInnn\fP. .TP \fB\e\e\fP Зворотна похила. .TP \fB\e[\fP Початок послідовності не призначених для друку символів, якими можна скористатися для вбудовування керівної послідовності термінала до запиту. .TP \fB\e]\fP Кінець послідовності не призначених для друку символів. .PD .RE .PP Номер команди та номер журналу зазвичай відрізняються: номер журналу команди – це її положення в списку журналу, який може включати команди, відновлені з файлу журналу (див. нижче .SM \fBЖУРНАЛ\fP), а номер команди — це позиція в послідовності команд, що виконуються під час поточного сеансу оболонки. Після декодування рядка він розширюється за допомогою розширення параметрів, заміни команд, арифметичного розширення та видалення лапок, залежно від значення параметра оболонки \fBpromptvars\fP (див. нижче опис команди \fBshopt\fP під заголовком .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP ). Це може мати небажані побічні ефекти, якщо екрановані частини рядка з’являються під час заміни команди або містять символи, призначені для розширення слова. .SH READLINE Це бібліотека, яка обробляє читання вводу під час використання інтерактивної оболонки, якщо під час виклику оболонки не вказано параметр \fB\-\-noediting\fP. Редагування рядків також застосовується за використання параметру \fB\-e\fP для вбудованої програми \fBread\fP. Типово команди редагування рядків подібні до команд emacs. Також доступний інтерфейс редагування рядків у стилі vi. Редагування рядків можна ввімкнути в будь\-який час за допомогою параметрів \fB\-o emacs\fP або \fB\-o vi\fP у вбудованій команді \fBset\fP (див. нижче .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP). Щоб вимкнути редагування рядка після запуску оболонки, скористайтеся параметрами \fB+o emacs\fP або \fB+o vi\fP вбудованої команди \fBset\fP. .SS "Запис Readline" У цьому розділі для запису сполучень клавіш застосовується нотація в стилі Emacs. Клавіші з Control позначаються C\-\fIклавіша\fP, наприклад, C\-n означає Control\-N. Так само, клавіші з \fIMeta\fP позначаються M\-\fIклавіша\fP, тобто, M\-x означає Meta\-X. .Q Alt або .Q Option . .PP На клавіатурах без клавіші \fIMeta\fP, M\-\fIx\fP означає ESC \fIx\fP, тобто, натискання і відпускання клавіші ESC, а потім натискання і відпускання \fIx\fP, послідовно. Це робить ESC \fIMeta\-префіксом\fP. Комбінація M\-C\-\fIx\fP означає ESC\-Control\-\fIx\fP, або натискання і відпускання клавіші ESC, а потім натискання і утримання клавіші Control під час натискання клавіші \fIx\fP з наступним відпусканням обох. .PP На деяких клавіатурах модифікатор\-клавіша Meta створює символи з встановленим восьмим бітом (0200). Ви можете використовувати змінну \fBenable\-meta\-key\fP, щоб контролювати, чи робити це, якщо це можливе для клавіатури. На багатьох інших термінал або емулятор термінала перетворює метаформовану клавішу на послідовність клавіш, що починається з ESC, як описано в попередньому абзаці. .PP Якщо ваша клавіша \fIMeta\fP створює послідовність клавіш із метапрефіксом ESC, ви можете зробити те саме для вказаних вами прив’язок клавіш M\-\fIkey\fP (див. \fBПрив'язка клавіш Readline\fP нижче), встановивши змінну \fBforce\-meta\-prefix\fP. .PP Команди \fBкeadline\fP можуть отримувати числові \fIаргументи\fP, які зазвичай діють як число повторень. Іноді, однак, важливим є знак аргументу. Передача від'ємного аргументу команді, яка діє в прямому напрямку (наприклад., \fBkill\-line\fP) змушує цю команду діяти у зворотному напрямку. Нижче наведено команди, які опрацьовують аргументи інакше. .PP Аргументом \fIточка\fP є поточна позиція курсора, а \fIпозначка\fP посилається на збережену позицію курсора. Текст між точкою вставлення та позначкою будемо називати \fIобластю\fP. У \fBreadline\fP передбачено поняття \fIактивної області\fP: коли область є активною, redisplay \fBreadline\fP підсвічує область, використовуючи значення змінної \fBactive\-region\-start\-color\fP. Змінна \fBenable\-active\-region\fP вмикає і вимикає цю функцію. Кілька команд встановлюють активний стан області; їх наведено нижче. .PP Коли команда описується як \fIвбитий\fP текст, видалений текст зберігається для можливого майбутнього пошуку (\fIвисмикування\fP). Вбитий текст зберігається в \fIкільці вбитого\fP. Послідовні вбиття призводять до того, що текст накопичується в один блок, який можна висмикнути відразу. Команди, які не вбивають тексту, відокремлюють шматки тексту на кільці вбитого. .SS "Ініціалізація Readline" \fBReadline\fP is customized by putting commands in an initialization file (the \fIinputrc\fP file). The name of this file is taken from the value of the .SM \fB\%INPUTRC\fP shell variable. If that variable is unset, the default is .FN \*~/.inputrc . If that file does not exist or cannot be read, \fBreadline\fP looks for .FN /etc/inputrc . When a program that uses the \fBreadline\fP library starts up, \fBreadline\fP reads the initialization file and sets the key bindings and variables found there, before reading any user input. .PP У файлі inputrc дозволено лише кілька базових конструкцій. Порожні рядки буде проігноровано. Рядки, які починаються з \fB#\fP, є коментарями. Рядки, які починаються з \fB$\fP, позначають конструкції умов. Інші рядки позначають прив'язки клавіш і параметри змінних. .PP Типові прив’язки клавіш у цьому розділі можна змінити за допомогою команд прив'язування клавіш у файлі \fIinputrc\fP. Програми, які використовують \fBreadline\fP, зокрема \fBbash\fP, можуть додавати власні команди та прив’язки. .PP Наприклад, вписування .RS .PP M\-Control\-u: universal\-argument .RE або .RS C\-Meta\-u: universal\-argument .RE .LP до файла \fIinputrc\fP призведе до того, що у відповідь на M\-C\-u буде виконано команду \fBreadline\fP \fIuniversal\-argument\fP. .PP Передбачено розпізнавання таких назв символів: \fIDEL\fP, \fIESC\fP, \fIESCAPE\fP, \fILFD\fP, \fINEWLINE\fP, \fIRET\fP, \fIRETURN\fP, \fIRUBOUT\fP (руйнівне зворотне вилучення), \fISPACE\fP, \fISPC\fP і \fITAB\fP. .PP Окрім назв команд, \fBreadline\fP уможливлює пов'язування комбінацій клавіш із рядком, який буде вставлено, коли буде натиснуто комбінацію (\fIмакрос\fP). Різниця між макросом і командою полягає в тому, що макрос беруть в одинарні або подвійні лапки. .SS "Клавіатурні скорочення у readline" Синтаксис записів, які керують прив'язкою клавіш у файлі \fIinputrc\fP, є доволі простим. Достатньо вказати назву команди або текст макроса та послідовність клавіш, з якою слід пов'язати цю команду чи макрос. Комбінацію клавіш можна вказати в один з двох способів: у формі символічної назви клавіш, із можливими префіксами \fIMeta\-\fP або \fIControl\-\fP, або у формі послідовності клавіш. Послідовність клавіш і назву слід відокремлювати двокрапкою. Між назвою та двокрапкою не повинно бути пробілів. .PP При використанні форми \fBназва_комбінації\fP:\^\fIназва_функції\fP або \fIмакрос\fP, \fIназва_комбінації\fP є комбінацією назв клавіш у латинській розкладці. Приклад: .PP .RS .EX .nf Control\-u: universal\-argument Meta\-Rubout: backward\-kill\-word Control\-o: \*"> output\*" .fi .EE .RE .LP У наведеному вище прикладі \fIC\-u\fP пов'язано із функцією \fBuniversal\-argument\fP, \fIM\-DEL\fP пов'язано із функцією \fBbackward\-kill\-word\fP, а \fIC\-o\fP пов'язано із запуском макроса, який записано у правій частині виразу (тобто вставити текст .Q "> output" до рядка). .PP У другій формі, \fB\*"послідовність_клавіш\*"\fP:\^\fIназва_функції\fP або \fIмакрос\fP, \fBпослідовність_клавіш\fP відрізняється від \fBназви_комбінації\fP вище тим, що рядки, які описують усю послідовність клавіш можна вказати, записавши послідовність у подвійних лапках. Можна використовувати деякі із екранованих послідовностей у стилі GNU Emacs, як у наведеному нижче прикладі, але розпізнавання символічних назв клавіш не передбачено. .PP .RS .EX .nf \*"\eC\-u\*": universal\-argument \*"\eC\-x\eC\-r\*": re\-read\-init\-file \*"\ee[11\*~\*": \*"Function Key 1\*" .fi .EE .RE .PP У цьому прикладі \fIC\-u\fP знову пов'язано із функцією \fBuniversal\-argument\fP. \fIC\-x C\-r\fP пов'язано із функцією \fBre\-read\-init\-file\fP, а \fIESC [ 1 1 \*~\fP пов'язано із вставленням тексту .Q "Function Key 1" . .PP Ось повний список екранованих послідовностей, якими можна скористатися при визначенні послідовностей клавіш у стилі GNU Emacs: .RS .PD 0 .TP \fB\eC\-\fP Префікс Ctrl. .TP \fB\eM\-\fP Додавання мета\-префікса або перетворення наступного символу на мета\-символ, як описано нижче в розділі \fBforce\-meta\-prefix\fP. .TP \fB\ee\fP Символ скасування. .TP \fB\e\e\fP Зворотна похила. .TP \fB\e\*"\fP Буквально \*", подвійна лапка. .TP \fB\e\*'\fP Буквально \*', одинарна лапка. .RE .PD .PP Окрім екранованих послідовностей у стилі GNU Emacs, доступний другий набір екранувань зворотною похилою рискою: .RS .PD 0 .TP \fB\ea\fP гудок (дзвінок) .TP \fB\eb\fP backspace .TP \fB\ed\fP Delete .TP \fB\ef\fP подавання бланку .TP \fB\en\fP новий рядок .TP \fB\er\fP повернення каретки .TP \fB\et\fP горизонтальна табуляція .TP \fB\ev\fP вертикальна табуляція .TP \fB\e\fP\fInnn\fP Восьмибітовий символ, значенням якого є вісімкове значення \fInnn\fP (від однієї до трьох цифр). .TP \fB\ex\fP\fIHH\fP Восьмибітовий символ, значенням якого є шістнадцяткове значення \fIHH\fP (від однієї до двох шістнадцяткових цифр). .RE .PD .PP При введення тексту макросу для позначення визначення макросу слід використовувати одинарні або подвійні лапки. Текст поза лапками вважатиметься назвою функції. У вмісті макросу буде розгорнуто усі описані вище екрановані символом зворотної похилої риски послідовності. Символ зворотної похилої риски екранує будь\-який інший символ у тексті макросу, зокрема \*" та \*'. .PP Переглянути або змінити поточні комбінації клавіш \fBreadline\fP у \fBbash\fP можна за допомогою вбудованої команди \fBbind\fP. Змінити режим редагування під час інтерактивного використання можна за допомогою параметрів \fB\-o emacs\fP іо \fB\-o vi\fP вбудованої команди \fBset\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .SS "Змінні Readline" У \fBreadline\fP передбачено змінні, якими можна скористатися для налаштовування поведінки редактора. Значення змінної може бути встановлено у файлі \fIinputrc\fP за допомогою інструкції у такій формі: .RS .PP \fBset\fP \fIназва_змінної\fP \fIзначення\fP .RE або за допомогою вбудованої команди \fBbind\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .PP Якщо не зазначено, змінні рядка \fBreadline\fPreadline можуть набувати значень \fBOn\fP або \fBOff\fP (без урахування регістру). Нерозпізнані назви змінних нехтуються. Коли \fBreadline\fP читає значення змінної, порожні або нульові значення .Q on (без врахування регістру символів), а .Q 1 еквівалентне до \fBOn\fP. Усі інші значення еквівалентні до \fBOff\fP. .PP Команда \fBbind\fP виводить список назв із значень поточних змінних \fBreadline\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче). .PP Змінні та їхні типові значення: .PP .PD 0 .TP \fBactive\-region\-start\-color\fP Рядкова змінна, яка керує кольором та тлом тексту при показі тексту в активній області (див. опис \fBenable\-active\-region\fP нижче). Ця змінна не повинна приймати будь\-яких фізичних позицій символів на екрані, отже вона має складатися лише з керівних послідовностей символів термінала. Її буде виведено до термінала до показу тексту в активній області. Для цієї змінної буде відновлено типове значення під час кожної зміни типу термінала. Типовим значенням є рядок, який переводить термінал у надзвичайний режим, отриманий з опису термінала terminfo. Зразковим значенням може бути .Q \ee[01;33m . .TP \fBactive\-region\-end\-color\fP Рядкова змінна, яка .Q undoes наслідки застосування \fBactive\-region\-start\-color\fP і відновлює .Q normal вигляд термінала після показу тексту в активній області. Цей рядок не повинен приймати жодних фізичних позицій символів на екрані, отже, він має складатися лише з екранованих послідовностей термінала. Його буде виведено до термінала після показу тексту в активній області. Для цієї змінної буде відновлено типове значення при зміні типу термінала. Типовим значенням є рядок, який відновлює термінал з надзвичайного режиму, отриманий з опису термінала terminfo. Зразок значення: .Q \ee[0m . .TP \fBbell\-style (audible)\fP Керує тим, що відбудеться, коли \fBreadline\fP звертається до звукового сигналу термінала. Якщо встановлено \fBnone\fP, \fBreadline\fP не подає звукового сигналу. Якщо встановлено \fBvisible\fP, \fBreadline\fP використовує видимий дзвінок, якщо такий є. Якщо встановлено \fBaudible\fP, намагається подати звуковий сигнал термінала. .TP \fBbind\-tty\-special\-chars (On)\fP Якщо встановлено \fBOn\fP, \fBreadline\fP намагається пов'язати керувальні символи, які спеціально обробляються термінальним драйвером ядра, з їх еквівалентами \fBreadline\fP. Вони перевизначають стандартні прив'язки \fBreadline\fP, описані тут. Введіть .Q "stty \-a" до запиту \fBbash\fP, щоб переглянути параметри вашого поточного термінала, зокрема спеціальні керівні символи (зазвичай \fBcchars\fP). .TP \fBblink\-matching\-paren (Off)\fP Якщо встановлено \fBOn\fP, \fBreadline\fP намагається короткочасно перемістити курсор до відкритої дужки, коли вставлено закриту дужку. .TP \fBcolored\-completion\-prefix (Off)\fP Якщо встановлено \fBOn\fP, \fBreadline\fP у переліку завершень виводить спільний префікс набору можливих завершень іншим кольором. Визначення кольору беруться зі значення змінної середовища \fBLS_COLORS\fP. Якщо у \fB$LS_COLORS\fP є визначення кольору для нетипового суфікса .Q .readline-colored-completion-prefix , \fBreadline\fP використовує цей колір для загального префікса, замість його типового кольору. .TP \fBcolored\-stats (Off)\fP .\" Tucking multiple macro calls into a paragraph tag requires some .\" finesse. We require `\c`, and while the single-font macros don't .\" honor input trap continuation, the font alternation macros do. Якщо встановлено \fBOn\fP, \fBreadline\fP показує можливі завершення, використовуючи різні кольори, щоб вказують на тип файлу. Визначення кольору беруться зі значення змінної середовища \fBLS_COLORS\fP. .TP \fBcomment\-begin\ (\fP .Q \fB#\fP \fB)\fP Рядок, який буде вставлено, якщо буде виконано команду \fBreadline\fP \fBinsert\-comment\fP. Цю команду пов'язано із \fBM\-#\fP у режимі emacs і \fB#\fP у режимі команд vi. .TP \fBcompletion\-display\-width (\-1)\fP Кількість позицій стовпчиків на екрані, які буде використано для показу можливих варіантів при виконанні автоматично доповнення. Значення буде проігноровано, якщо воно менше 0 або більше за ширину екрана у терміналі. Значення 0 призведе до показу відповідників по одному на рядок. Типовим є значення \-1. .TP \fBcompletion\-ignore\-case (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP виконує пошук відповідників за назвою файла і доповнює текст без врахування регістру символів. .TP \fBcompletion\-map\-case (Off)\fP Якщо встановлено значення \fBOn\fP і увімкнено \fBcompletion\-ignore\-case\fP, \fBreadline\fP оброблятиме дефіси (\fI\-\fP) та підкреслювання (\fI_\fP) як еквіваленти при виконання пошуку та автоматичного доповнення назв файлів без врахування регістру символів. .TP \fBcompletion\-prefix\-display\-length (0)\fP Максимальна довжина у символах загального префікса у списку можливих варіантів доповнення, для якої префікс буде показано без видозміни. Якщо встановлено додатне значення, при показі варіантів автоматичного доповнення загальний префікс, довший за встановлене значення, буде замінено обрізаним варіантом, який завершуватиметься трьома крапками. Якщо автодоповнення починається з крапки, а \fBeadline\fP автодоповнює назви файлів, замість трьох крапок буде використано три символи підкреслення. .TP \fBcompletion\-query\-items (100)\fP Визначає, коли користувач отримує запит щодо показу певної кількості можливих доповнень, згенерованих командою \fBpossible\-completions\fP. Можна встановити будь\-яке ціле значення, більше або рівне нулю. Якщо кількість можливих доповнень більша або дорівнює значенню цієї змінної, \fBreadline\fP запитає, чи бажає користувач їх переглядати; в іншому разі вони просто виведуться в терміналі. Нульове значення означає, що \fBreadline\fP ніколи не повинна надсилати запит; від'ємні значення вважатимуться нульовими. .TP \fBconvert\-meta (On)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP перетворює зчитані символи, восьмий біт яких встановлено на послідовність клавіш ASCII, очищуючи восьмий біт і додаючи перед ним символ екранування (перетворюючи символ так, щоб він мав префікс meta). Типове значення — \fIOn\fP, але \fBreadline\fP встановлює значення \fIOff\fP, якщо локаль містить символи, кодування яких можуть містити байти з встановленим восьмим бітом. Ця змінна залежить від категорії локалі \fBLC_CTYPE\fP і може змінюватися, якщо змінюється локаль. Ця змінна також впливає на прив'язки клавіш; див. опис \fBforce\-meta\-prefix\fP нижче. .TP \fBdisable\-completion (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP успадковуватиме автоматичне доповнення слів. Символи автоматичного доповнення буде встановлено до рядка так, їх було пов'язано із \fBself\-insert\fP. .TP \fBecho\-control\-characters (On)\fP Якщо встановлено значення \fBOn\fP, у операційних системах, які сигналізують про відповідну підтримку, \fBreadline\fP повторить символ, який відповідає сигналу, створеному з клавіатури. .TP \fBediting\-mode (emacs)\fP Визначає, буде \fBreadline\fP починати роботу із набором прив'язок до комбінацій клавіш, подібним до \fIEmacs\fP чи \fIvi\fP. Для параметра \fBрежим_редагування\fP можна встановити значення \fBemacs\fP або \fBvi\fP. .TP \fBemacs\-mode\-string (@)\fP Якщо змінну \fIshow\-mode\-in\-prompt\fP увімкнено, цей рядок виводиться безпосередньо перед останнім рядком основного запиту, коли активний режим редагування emacs. Значення розгортається як прив’язка клавіші, тому доступний стандартний набір мета\- та керувальних префіксів і керувальних послідовностей зі зворотною косою рискою. Використовуйте екрановані послідовності \e1 та \e2, щоб почати та закінчити послідовності недрукованих символів, які можна використовувати для вбудовування послідовності керування терміналом у рядок режиму. .TP \fBenable\-active\-region (On)\fP Якщо для цієї змінної встановлено значення \fIOn\fP, \fBreadline\fP дозволить певним командам позначати область як \fIактивну\fP. Якщо область є активною, \fBreadline\fP підсвічуватиме текст в області з використанням значення змінної \fBactive\-region\-start\-color\fP, типовим значенням якої є рядок, який вмикає надзвичайний режим термінала. В активній області буде показано текст, який вставлено вставленням у дужках, та будь\-який відповідний текст, який знайдено нарощувальним або ненарощувальним пошуком у журналі. .TP \fBenable\-bracketed\-paste (On)\fP Коли встановлено \fBOn\fP, \fBreadline\fP налаштує термінал так, що дозволить йому вміщувати кожну вставку в буфер редагування як один рядок символів, замість того, щоб обробляти кожен символ так, ніби він був прочитаний з клавіатури. Це називають \fIрежимом вставлення у дужках\fP; він запобігає виконанню у \fBreadline\fP будь\-яких команд з редагування, прив'язаних до послідовностей клавіш, що можуть з'являтися у вставленому тексті. .TP \fBenable\-keypad (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP намагатиметься ввімкнути програмну клавіатуру під час її виклику. Деякі системи потребують цього, щоб увімкнути клавіші зі стрілками. .TP \fBenable\-meta\-key (On)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP намагається увімкнути будь\-яку клавішу\-модифікатор meta, яку термінал обіцяє підтримувати. У багатьох терміналах клавіша Meta використовується для надсилання восьмибітних символів; ця змінна перевіряє можливості термінала, які показують, що термінал може вмикати та вимикати режим, який встановлює восьмий біт символу (0200), якщо клавіша Meta утримується натиснутою під час введення символу (метасимвол). .TP \fBexpand\-tilde (Off)\fP Якщо встановлено \fBOn\fP, коли \fBreadline\fP намагається закінчити слово, виконується розгортання тильди. .TP \fBforce\-meta\-prefix (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP змінює свою поведінку під час пов'язування послідовностей клавіш, що містять \eM\- або Meta\- (див. \fBПрив'язки клавіш\fP вище), перетворюючи послідовність клавіш вигляду \eM\-\fIC\fP або Meta\-\fIC\fP на двосимвольну послідовність \fBESC\fP \fIC\fP (додаючи префікс meta). Якщо для \fBforce\-meta\-prefix\fP встановлено значення \fBOff\fP (типовий варіант), \fBreadline\fP використовує значення змінної \fBconvert\-meta\fP, щоб визначити, чи слід виконувати це перетворення: якщо \fBconvert\-meta\fP має значення \fBOn\fP, \fBreadline\fP виконує описане вище перетворення; якщо воно має значення \fBOff\fP, \fBreadline\fP перетворює \fIC\fP на метасимвол, встановлюючи восьмий біт (0200). .TP \fBhistory\-preserve\-point (Off)\fP Якщо встановлено \fBOn\fP, код журналу намагається розмістити курсор у тому самому місці в кожному рядку журналу, отриманому за допомогою \fBprevious\-history\fP або \fBnext\-history\fP. .TP \fBhistory\-size (не встановлено)\fP Задає максимальну кількість записів журналу, збережених у списку журналу. Якщо встановлено значення 0, усі наявні записи журналу видаляються, а нові записи не зберігаються. Якщо встановлено значення менше нуля, кількість записів журналу не обмежена. Типово \fBbash\fP встановлює кількість записів журналу за значенням змінної оболонки \fBHISTSIZE\fP. За спроби встановити для \fIhistory\-size\fP нечислове значення, для максимальної кількості записів журналу буде встановлено значення 500. .TP \fBhorizontal\-scroll\-mode (Off)\fP Встановлення для цієї змінної значення \fBOn\fP, змушує \fBreadline\fP використовувати для показу один рядок, прокручуючи введення горизонтально на одному екранному рядку, коли він стає довшим за ширину екрана, а не переносити на новий рядок. Цей параметр автоматично вмикається для терміналів висотою 1. .TP \fBinput\-meta (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP вмикає восьмибітний ввід (тобто не очищує восьмий біт у символах, які зчитує), незалежно від того, підтримку чого передбачено у терміналі. Типове значення — \fIOff\fP, але \fBreadline\fP встановлює його на \fIOn\fP, якщо локаль містить символи, кодування яких може містити байти зі встановленим восьмим бітом. Ця змінна залежить від категорії локалі \fBLC_CTYPE\fP, і її значення може змінюватися, якщо змінюється локаль. Назва \fBmeta\-flag\fP є синонімом \fBinput\-meta\fP. .TP \fBisearch\-terminators\ (\fP .Q \fBC\-[C\-j\fP \fB)\fP Рядок символів, який повинен завершити інкрементний пошук без подальшого виконання символу як команди. Якщо цій змінній не надано значення, інкрементний пошук завершать символи \fIESC\fP і \fBC\-J\fP. .TP \fBkeymap (emacs)\fP Задає поточну розкладку клавіш \fBreadline\fP. Допускаються назви розкладок: \fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-command\fP і \fIvi\-insert\fP. \fIvi\fP еквівалентне \fIvi\-command\fP; \fIemacs\fP еквівалентне \fIemacs\-standard\fP. Типовим є значення \fIemacs\fP; значення \fBediting\-mode\fP також впливає на типову розкладку. .TP \fBkeyseq\-timeout (500)\fP Визначає тривалість очікування \fBreadline\fP на символ, під час читання неоднозначної послідовності клавіш (такої, яка може сформувати повну послідовність клавіш на основі вже введеного, або може продовжити введення для завершення довшої послідовності клавіш). Якщо \fBreadline\fP не отримує вхідних даних протягом затримки, \fBreadline\fP використає коротшу, але повну послідовність клавіш. Значення вказано в мілісекундах, тому значення 1000 означає, що \fIreadline\fP чекатиме на додаткове введення одну секунду. Якщо для цієї змінної встановлено значення, менше або рівне нулю, або нечислове значення, \fBreadline\fP чекатиме натиснення наступної клавіші, щоб вирішити, яку послідовність клавіш завершити. .TP \fBmark\-directories (On)\fP Якщо встановлено в \fBOn\fP, завершені каталоги матимуть похилу в кінці назв. .TP \fBmark\-modified\-lines (Off)\fP Якщо встановлено в \fBOn\fP, рядки журналу, що були змінені, будуть показані \fBreadline\fP з зіркою попереду (\fB*\fP). .TP \fBmark\-symlinked\-directories (Off)\fP Якщо встановлено значення \fBOn\fP, до повних назв, які є символьними посиланнями на каталоги, додається коса риска, залежно від значення \fBmark\-directories\fP. .TP \fBmatch\-hidden\-files (On)\fP Якщо для цієї змінної встановлено значення \fBOn\fP, \fBreadline\fP примусово встановлюватиме відповідність файлам, назви яких починаються з .Q . (приховані файли) при виконанні доповнення назв файлів. Якщо встановлено значення \fBOff\fP, користувачеві доведеться включати початкову .Q . до назви файла, доповнення якої відбувається. .TP \fBmenu\-complete\-display\-prefix (Off)\fP Якщо встановлено значення \fBOn\fP, доповнення за меню показує спільний префікс списку можливих доповнень (який може бути порожнім) перед циклічним переходом за списком. .TP \fBoutput\-meta (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP показуватиме символи зі встановленим восьмим бітом безпосередньо, а не у вигляді escape\-послідовності з метапрефіксом. Типовим є \fIOff\fP, але \fBreadline\fP встановить його в \fIOn\fP, якщо локаль містить символи, чиї кодування можуть включати байти із встановленим восьмим байтом. Значення цієї змінної залежить від категорії локалі \fBLC_CTYPE\fP і може змінюватися при зміні локалі. .TP \fBpage\-completions (On)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP використовуватиме внутрішній пейджер схожий на \fImore\fP(1) для показу повноекранного списку можливих доповнень за раз. .TP \fBprefer\-visible\-bell\fP Див. \fBbell\-style\fP. .TP \fBprint\-completions\-horizontally (Off)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP виводитиме доповнення зі збігами в алфавітному порядку горизонтально, а не донизу екрану. .TP \fBrevert\-all\-at\-newline (Off)\fP Якщо встановлено значення \fBOn\fP, \fBaccept\-line\fP перед поверненням скасує всі зміни в рядках журналу, коли виконується \fBaccept\-line\fP. Типово рядки журналу можуть бути змінені й зберігають окремі списки скасування для викликів \fBreadline\fP. .TP \fBsearch\-ignore\-case (Вимкнено)\fP Якщо встановлено значення \fBOn\fP, \fBreadline\fP виконує нарощувальні і ненарощувальні пошуки у списку журналу без врахування регістру символів. .TP \fBshow\-all\-if\-ambiguous (Off)\fP Це змінює типову поведінку функцій доповнення. Якщо встановлено значення \fBOn\fP, для слів, які мають більше одного можливого доповнення, замість дзвінка будуть негайно виводитися збіги. .TP \fBshow\-all\-if\-unmodified (Off)\fP Це змінює типову поведінку функцій доповнення так само, як \fBshow\-all\-if\-ambiguous\fP. Якщо встановлено значення \fBOn\fP, для слів, які мають більше одного можливого доповнення без будь\-якого можливого часткового доповнення (можливі доповнення не мають спільного префікса), замість дзвінка будуть негайно виводитися збіги. .TP \fBshow\-mode\-in\-prompt (Off)\fP Якщо встановлено в \fBOn\fP, додайте рядок на початку, щоб показувати підказку режиму редагування: emacs, команда vi, або вставлення vi. Рядки режиму може встановлювати користувач (напр., \fIemacs\-mode\-string\fP). .TP \fBskip\-completed\-text (Off)\fP Якщо встановлено в \fBOn\fP, це змінює типову поведінку доповнення коли один відповідник вставляється в рядок. Цей параметр працює лише коли виконується доповнення всередині слова. Якщо увімкнено, \fBreadline\fP не вставляє символи, що збігаються з символами після точки у слові, що доповнюється, тож частини слів після курсора не дублюються. .TP \fBvi\-cmd\-mode\-string ((cmd))\fP Якщо змінну \fIshow\-mode\-in\-prompt\fP увімкнено, цей рядок виводиться безпосередньо перед останнім рядком основного запиту, коли активний режим редагування vi у режимі команди. Значення розгортається як прив’язка клавіші, тому доступний стандартний набір мета\- та керувальних префіксів і керувальних послідовностей зі зворотною косою рискою. Використовуйте екрановані послідовності \e1 та \e2, щоб почати та закінчити послідовності недрукованих символів, які можна використовувати для вбудовування послідовності керування терміналом у рядок режиму. .TP \fBvi\-ins\-mode\-string ((ins))\fP Якщо змінну \fIshow\-mode\-in\-prompt\fP увімкнено, цей рядок виводиться безпосередньо перед останнім рядком основного запиту, коли активний режим редагування vi у режимі вставлення. Значення розгортається як прив’язка клавіші, тому доступний стандартний набір мета\- та керувальних префіксів і керувальних послідовностей зі зворотною косою рискою. Використовуйте екрановані послідовності \e1 та \e2, щоб почати та закінчити послідовності недрукованих символів, які можна використовувати для вбудовування послідовності керування терміналом у рядок режиму. .TP \fBvisible\-stats (Off)\fP Якщо встановлено значення \fBOn\fP, при виведенні списку можливих доповнень до назви файла буде дописано символ, який позначає тип файла, який виводить команда \fIstat\fP(2). .PD .SS "Умовні конструкції readline" \fBReadline\fP реалізує засіб, подібний за духом до умовної компіляції препроцесора C, що дозволяє виконувати прив’язки клавіш і налаштування змінних у результаті тестів. Доступними є чотири директиви обробника. .TP \fB$if\fP Конструкція \fB$if\fP дозволяє виконувати прив’язки на основі режиму редагування, термінала, який використовується, або програми, що використовує \fBreadline\fP. Текст тесту після будь\-якого оператора порівняння поширюється до кінця рядка; якщо не зазначено інше, для його ізолювання не потрібні символи. .RS .TP \fBmode\fP Форма \fBmode=\fP директиви \fB$if\fP використовується для перевірки того, перебуває \fBreadline\fP у режимі emacs чи vi. Це можна використати разом з командою \fBset keymap\fP, наприклад, щоб установити прив'язки лише для розкладок \fIemacs\-standard\fP і \fIemacs\-ctlx\fP, якщо \fBreadline\fP запущено в режимі emacs. .TP \fBterm\fP Формою \fBterm=\fP можна скористатися для включення специфічних для термінала прив'язок клавіш, можливо, щоб пов'язати послідовності натискання клавіш із функціональними клавішами термінала. Слово у правій частині виразу після \fB=\fP підлягатиме перевірці на відповідність повній назві термінала та частині назви термінала до першого символу \fB\-\fP. Це, наприклад, надаватиме змогу встановити відповідність \fIxterm\fP як до \fIxterm\fP, так і до \fIxterm\-256color\fP. .TP \fBversion\fP Перевіркою \fBversion\fP можна скористатися для виконання порівнянь версій \fBreadline\fP. Змінну \fBversion\fP буде розгорнуто до поточної версії \fBreadline\fP. Множина операторів порівняння складається з \fB=\fP (і \fB==\fP), \fB!=\fP, \fB<=\fP, \fB>=\fP, \fB<\fP та \fB>\fP. Номер версії, який буде використано праворуч від оператора, складається з номера основної версії, необов'язкової десяткової крапки та необов'язкового номера проміжної версії (наприклад, \fB7.1\fP). Якщо проміжну версію не вказано, її типовим значенням є \fB0\fP. Оператор може бути відокремлено від рядка \fBversion\fP і від номера версії пробілами. .TP \fIapplication\fP Конструкцією \fIapplication\fP можна скористатися для включення специфічних для програми параметрів. Кожна з програм, у яких використано бібліотеку \fBreadline\fP, встановлює \fIназву програми\fP, а файл ініціалізації може перевіряти певне значення. Цим можна скористатися для прив'язки послідовностей клавіш до функцій, які можуть бути корисними для певної програми. Наприклад, вказана нижче команда додає послідовність клавіш, яка бере у лапки поточне або попереднє слово у \fBbash\fP: .PP .RS .EX .nf \fB$if\fP Bash # Нейтралізація поточного або попереднього слова \*"\eC\-xq\*": \*"\eeb\e\*"\eef\e\*"\*" \fB$endif\fP .fi .EE .RE .TP \fIvariable\fP Конструкція \fIvariable\fP надає у ваше розпорядження прості перевірки на рівність змінних та значень \fBreadline\fP. Дозволеними операторами порівняння є \fI=\fP, \fI==\fP і \fI!=\fP. Назву змінної має бути відокремлено від оператора порівняння пробілом; оператор може бути відокремлено від значення у правій частині пробілом. Перевірки можна виконувати як для булевих, так і для рядкових змінних. Булеві зміні слід порівнювати зі значеннями \fIon\fP і \fIoff\fP. .RE .TP \fB$else\fP Команди у цій гілці директиви \fB$if\fP буде виконано, якщо не буде пройдено перевірку умови. .TP \fB$endif\fP Ця команда, як у попередньому прикладі, перериває виконання команди \fB$if\fP. .TP \fB$include\fP This directive takes a single filename as an argument and reads commands and key bindings from that file. For example, the following directive would read .FN /etc/inputrc : .PP .RS .nf \fB$include\fP \^ \fI/etc/inputrc\fP .fi .RE .SS Пошук У \fBreadline\fP передбачено команди для пошуку у журналі команд (див. .SM \fBЖУРНАЛ\fP нижче) рядків, які містять вказаний рядок. Передбачено два режими пошуку: \fIнарощувальний\fP і \fIненарощувальний\fP. .PP Нарощувальний пошук розпочинається перед тим, як користувач завершив введення рядка для пошуку. При введення кожного з символів рядка пошуку, \fBreadline\fP показуватиме наступний запис із журналу, який відповідає введеному на поточний момент рядку. Для нарощувального пошуку достатньо мінімальної кількості символів для знаходження бажаного запису журналу. У режимі редагування emacs натисніть \fBC\-r\fP, щоб шукати певний рядок назад у журналі. Натискання \fBC\-s\fP виконує пошук вперед у журналі. Для переривання нарощувального пошуку використовують значення змінної \fBisearch\-terminators\fP. Якщо із цією змінною не пов'язано значення, нарощувальний пошук можна буде перервати натисканням клавіші \fIESC\fP або комбінації клавіш \fIC\-j\fP. Натискання комбінації клавіш \fIC\-g\fP призведе до переривання нарощувального пошуку і відновлення початкового рядка. При перериванні пошуку запис журналу, який містить рядок пошуку стане поточним рядком команди. .PP Щоб знайти інші відповідні записи в списку журналу, наберіть \fBC\-r\fP або \fBC\-s\fP, відповідно. Це почне пошук назад або вперед в журналу на наступний запис, щоб відповідає вже набраному рядку. Будь\-які інші комбінації клавіш прив'язані до команд \fBreadline\fP припинять пошук та виконають команду. Наприклад, розрив рядка припинить пошук та прийме рядок, таким чином виконуючи команду зі списку журналу. Команда переміщення завершить пошук, зробить останній знайдений рядок поточним і запустить редагування. .PP \fBReadline\fP запам'ятовує останній рядок нарощувального пошуку. Якщо буде двічі поспіль введено \fBC\-r\fP при визначенні рядка нового пошуку, буде використано рядок пошуку з пам'яті. .PP Ненарощувальні пошуки зчитують весь рядок пошуку перед тим, як починати шукати у записах журналу. Рядок пошуку може бути набраний користувачем або бути частиною поточного рядка. .SS "Назви команд readline" Далі наведено список назв команд та типові послідовності клавіш, до яких вони прив'язані. Назви команд без відповідної послідовності клавіш є типово неприв'язаними. .PP У наступних описах, \fIpoint\fP посилається на поточну позицію курсора, а \fImark\fP вказує на позицію курсора, збережену командою \fBset\-mark\fP. Текст між точкою і позначкою позначається, як \fIregion\fP. У \fBreadline\fP передбачено \fIактивної області\fP. Якщо область є активною, \fBreadline\fP підсвічуватиме текст в області з використанням значення \fBactive\-region\-start\-color\fP. Змінна \fBreadline\fP \fBenable\-active\-region\fP вмикає або вимикає цю поведінку. Декілька команд роблять область активною; їх згадано нижче. .SS "Команди для пересування" .PD 0 .TP \fBbeginning\-of\-line (C\-a)\fP Перейти до початку поточного рядка. На деяких клавіатурах може бути пов’язано з клавішею Home. .TP \fBend\-of\-line (C\-e)\fP Перейти до кінця рядка. На деяких клавіатурах може бути пов’язано з клавішею End. .TP \fBforward\-char (C\-f)\fP Перейти на символ вперед. На деяких клавіатурах це також може бути пов’язано з клавішею зі стрілкою праворуч. .TP \fBbackward\-char (C\-b)\fP Перейти на символ назад. На деяких клавіатурах це також може бути пов’язано з клавішею зі стрілкою ліворуч. .TP \fBforward\-word (M\-f)\fP Перейти вперед до кінця наступного слова. Слова складаються з літер та цифр. .TP \fBbackward\-word (M\-b)\fP Перейти назад до початку поточного або попереднього слова. Слова складаються з літер і цифр. .TP \fBshell\-forward\-word (M\-C\-f)\fP Перейти вперед до кінця наступного слова. Словами вважаються послідовності символів, які обмежено ненейтралізованими метасимволами оболонки. .TP \fBshell\-backward\-word (M\-C\-b)\fP Перейти назад до початку поточного або попереднього слова. Словами вважаються послідовності символів, які обмежено ненейтралізованими метасимволами оболонки. .TP \fBprevious\-screen\-line\fP Спробувати перемістити позицію до того самого стовпчика фізичного екрана у попередньому рядку фізичного екрана. Це не дасть бажаного результату, якщо поточний рядок \fBreadline\fP не займає більше одного фізичного рядка або якщо позиція не перевищує довжини запиту разом із довжиною екрана у символах. .TP \fBnext\-screen\-line\fP Спробувати перемістити позицію до того самого стовпчика фізичного екрана у наступному рядку фізичного екрана. Це не дасть бажаного результату, якщо поточний рядок \fBreadline\fP не займає більше одного фізичного рядка або якщо довжина поточного рядка \fBreadline\fP не перевищує довжини запиту разом із довжиною екрана у символах. .TP \fBclear\-display (M\-C\-l)\fP Очистити екран і, якщо можна, буфер гортання термінала, потім перемалювати поточний рядок, лишивши поточний рядок на початку екрана. .TP \fBclear\-screen (C\-l)\fP Очистити екран, потім перемалювати поточний рядок, лишивши поточний рядок на початку екрана. З числовим аргументом освіжити поточний рядок без очищення екрана. .TP \fBredraw\-current\-line\fP Освіжити поточний рядок. .PD .SS "Команди для роботи з журналом" .PD 0 .TP \fBaccept\-line (Newline, Return)\fP Прийняти рядок, незалежно від того, де перебуває курсор. Якщо цей рядок є непорожнім, додати його до списку журналу відповідно до стану змінних .SM \fBHISTCONTROL\fP і \fBHISTIGNORE\fP. Якщо рядок є зміненим рядком журналу, потім відновити початковий стан рядка журналу. .TP \fBprevious\-history (C\-p)\fP Отримати попередню команду зі списку журналу, пересунувшись назад списком. Це також може бути пов’язано зі стрілкою вгору на деяких клавіатурах. .TP \fBnext\-history (C\-n)\fP Отримати наступну команду зі списку журналу, пересунувшись вперед списком. Це також може бути пов’язано зі стрілкою вниз на деяких клавіатурах. .TP \fBbeginning\-of\-history (M\-<)\fP Перейти до першого рядка у журналі. .TP \fBend\-of\-history (M\->)\fP Перейти до кінця журналу введення, тобто до рядка, який зараз вводять. .TP \fBoperate\-and\-get\-next (C\-o)\fP Прийняти поточний рядок до виконання, наче було натиснуто клавішу введення, і отримати наступний рядок з журналу відносно поточного для редагування. Числовий аргумент, якщо його вказано, визначає запис журналу, яким слід скористатися замість поточного рядка. .TP \fBfetch\-history\fP Із числовим аргументом отримати відповідний запис у списку журналу і зробити його поточним рядком. Без аргументу, перейти назад до першого запису у списку журналу. .TP \fBreverse\-search\-history (C\-r)\fP Шукати у напрямку до початку журналу, починаючи з поточного рядка і пересуваючись .Q up «вгору» журналу, якщо це потрібно. Це нарощувальний пошук. Ця команда встановлює області для встановлення відповідності тексту та активує область. .TP \fBforward\-search\-history (C\-s)\fP Шукати у напрямку до кінця журналу, починаючи з поточного рядка і пересуваючись .Q down «вгору» журналу, якщо це потрібно. Це нарощувальний пошук. Ця команда встановлює області для встановлення відповідності тексту та активує область. .TP \fBnon\-incremental\-reverse\-search\-history (M\-p)\fP Шукати у напрямку до початку журналу, починаючи з поточного рядка, з використанням ненарощувального пошуку рядка, який надано користувачем. Рядок для пошуку може відповідати будь\-якій частині рядка журналу. .TP \fBnon\-incremental\-forward\-search\-history (M\-n)\fP Шукати у напрямку до кінця журналу з використанням ненарощувального пошуку рядка, який надано користувачем. Рядок для пошуку може відповідати будь\-якій частині рядка журналу. .TP \fBhistory\-search\-backward\fP Шукати назад в журналі рядок з символами між початком поточного рядка і точкою. Критерій пошуку має збігатися з рядком тексту на початку рядка журналу. Такий пошук не є нарощувальним. Його може бути пов'язано із клавішею Page Up на деяких клавіатурах. .TP \fBhistory\-search\-forward\fP Шукати вперед у журналі рядок з символами між початком поточного рядка і точкою. Рядок пошуку має збігатися з початком рядка журналу. Цей пошук не є нарощувальним. Його може бути пов'язано із клавішею Page Down на деяких клавіатурах. .TP \fBhistory\-substring\-search\-backward\fP Шукати назад у журналі рядок з символами між початком поточного рядка і точкою. Рядок пошуку може мати збіг будь\-де у рядку журналу. Це \- ненарощувальний пошук. .TP \fBhistory\-substring\-search\-forward\fP Шукати вперед через історію рядок з символами між початком поточного рядка і точкою. Рядок пошуку може мати збіг будь\-де в низці журналу. Це \- ненарощувальний пошук. .TP \fByank\-nth\-arg (M\-C\-y)\fP Вставити перший аргумент попередньої команди (переважно друге слово на попередньому рядку) в точці. З аргументом \fIn\fP, вставити \fIn\fP\-те слово з попередньої команди (слова в попередній команді починаються з слова 0). Негативний аргумент вставляє \fIn\fP\-те слово від кінця попередньої команди. Коли аргумент \fIn\fP обчислено, буде використано можливості розгортання журналу для видобування \fIn\fP\-го слова, наче встановлено .Q !\fIn\fP розгортання за журналом. .TP \fByank\-last\-arg (M\-.\^, M\-_\^)\fP Вставити останній аргумент попередньої команди (останнє слово попереднього запису журналу). З числовим аргументом, поводиться так само як \fByank\-nth\-arg\fP. Успішні виклики в \fByank\-last\-arg\fP пересуваються назад в списку журналу, вставляючи останнє слово (або слово, вказане аргументом першого виклику) кожного рядка по черзі. Будь\-який числовий аргумент наданий цим послідовним викликам визначає напрямок пересування через історію. Негативний аргумент перемикає напрямок через історію (назад чи вперед), Засоби розкриття журналу використовуються для витягання останнього слова, як ніби вказано розкриття журналу .Q !$ розгортання за журналом. .TP \fBshell\-expand\-line (M\-C\-e)\fP Розгорнути рядок, виконавши розгортання слів оболонки. Це виконує розгортання псевдонімів та журналу, лапки \fB$\fP\*'\fIрядок\fP\*' та \fB$\fP\*"\fIрядок\fP\*", розгортання тильди, розгортання параметрів та змінних, арифметичне розгортання, заміну команд та процесів, розділення слів та вилучення лапок. Явний аргумент придушує підставляння команд та процесів. Див. .SM \fBHISTORY EXPANSION\fP нижче, щоб дізнатися більше про розгортання за журналом. .TP \fBhistory\-expand\-line (M\-\*^)\fP Виконати доповнення за журналом для поточного рядка. Опис доповнення за журналом можна знайти у розділі .SM \fBДОПОВНЕННЯ ЗА ЖУРНАЛОМ\fP нижче. .TP \fBmagic\-space\fP Виконати доповнення за журналом для поточного рядка і вставити пробіл. Опис доповнення за журналом можна знайти у розділі .SM \fBДОПОВНЕННЯ ЗА ЖУРНАЛОМ\fP нижче. .TP \fBalias\-expand\-line\fP Виконати розгортання альтернатив у поточному рядку. Опис розгортання альтернатив можна знайти у розділі .SM \fBАЛЬТЕРНАТИВИ\fP. .TP \fBhistory\-and\-alias\-expand\-line\fP Виконати доповнення за журналом та розгортання альтернатив у поточному рядку. .TP \fBinsert\-last\-argument (M\-.\^, M\-_\^)\fP Синонім до \fByank\-last\-arg\fP. .TP \fBedit\-and\-execute\-command (C\-x C\-e)\fP Викликати редактор для поточного рядка команди і виконати результат як команди оболонки. \fBBash\fP спробує викликати як редактор .SM \fB$VISUAL\fP, .SM \fB$EDITOR\fP і \fIemacs\fP, саме у такому порядку. .PD .SS "Команди для змінення тексту" .PD 0 .TP \fIend\-of\-file\fP\fB (зазвичай C\-d)\fP Символ, що вказує на кінець файла, як його встановлено, наприклад, \fIstty\fP(1). Якщо цей символ читається, коли в рядку немає символів, а позиція міститься на початку рядка, \fBreadline\fP інтерпретує його як кінець уведення і повертає .SM \fBEOF\fP. .TP \fBdelete\-char (C\-d)\fP Видалити символ у точці. Якщо ця функція прив’язана до того ж символу, що й символ tty \fBEOF\fP, зазвичай \fBC\-d\fP, опис дії див. вище. Також може бути пов'язано із клавішею Delete на деяких клавіатурах. .TP \fBbackward\-delete\-char (Rubout)\fP Видалити символ перед курсором. Якщо надано числовий аргумент, зберегти видалений текст у кільці вбитого. .TP \fBforward\-backward\-delete\-char\fP Видалити символ під курсором, якщо курсор не перебуває в кінці рядка; в останньому випадку буде видалено символ перед курсором. .TP \fBquoted\-insert (C\-q, C\-v)\fP Додати наступний уведений символ до рядка дослівно. Так можна вставити послідовності клавіш, наприклад, \fBC\-q\fP. .TP \fBtab\-insert (C\-v TAB)\fP Вставити символ табуляції. .TP \fBself\-insert (a, b, A, 1, !, \fP.\|.\|.\fB)\fP Вставити введений символ. .TP \fBbracketed\-paste\-begin\fP Область дії цієї функції обмежено до екранованих послідовностей .Q "bracketed paste" , які надсилають деякими терміналами, і такі прив'язки визначаються типово. Це надає змогу \fBreadline\fP вставляти вставлений текст як єдине ціле, не обробляючи кожен символ так, ніби він був прочитаний з клавіатури. Вставлені символи вставляються так, ніби кожен з них був зв'язаний з \fBself\-insert\fP, замість виконання будь\-яких команд редагування. .IP Вставлення у дужках встановлює область для вставлення тексту і активує область. .TP \fBtranspose\-chars (C\-t)\fP Поміняти місцями символ перед курсором і символ під курсором, також перемістити курсор вперед. Якщо курсор перебуває в кінці рядка, то буде переставлено останні два символи рядка. Від'ємні аргументи не діють. .TP \fBtranspose\-words (M\-t)\fP Поміняти місцями слово перед курсором і слово після курсора, також перемістити курсор вперед. Якщо курсор перебуває в кінці рядка, то буде переставлено останні два слова в рядку. .TP \fBshell\-transpose\-words (M\-C\-t)\fP Поміняти місцями слово перед курсором і слово після курсора, також перемістити курсор вперед. Якщо точка вставлення перебуває в кінці рядка, то буде переставлено останні два слова в рядку. Межі слів є тими самими, що і для \fBshell\-forward\-word\fP і \fBshell\-backward\-word\fP. .TP \fBupcase\-word (M\-u)\fP Перевести поточне (або наступне) слово у верхній регістр. З від'ємним аргументом, перевести у верхній регістр попереднє слово, не переміщуючи курсора. .TP \fBdowncase\-word (M\-l)\fP Перевести поточне (або наступне) слово у нижній регістр. З від'ємним аргументом, перевести у нижній регістр попереднє слово, не переміщуючи курсора. .TP \fBcapitalize\-word (M\-c)\fP Почати з великої літери поточне (або наступне) слово. З від'ємним аргументом, Почати з великої літери попереднє слово, не переміщуючи курсора. .TP \fBoverwrite\-mode\fP Перемкнути режим заміни. З явним додатним числовим аргументом перемикається в режим заміни. З явним недодатним числовим аргументом перемикається в режим вставки. Ця команда впливає лише на режим \fBemacs\fP; режим \fBvi\fP вмикає заміну інакше. Кожен виклик \fIreadline()\fP починається в режимі вставки. .IP В режимі заміни, пов'язані з \fBself\-insert\fP, замінюють текст у позиції курсора, а не зсувають його вправо. Символи, пов'язані з \fBbackward\-delete\-char\fP, замінюють символ перед курсором на пропуск. Типово ця команда не зв’язана, але її можна пов'язати із клавішею Insert на деяких клавіатурах. .PD .SS "Вбивання та висмикування" .PD 0 .TP \fBkill\-line (C\-k)\fP Вбити текст від точки до кінця поточного рядка. З від'ємним числовим аргументом вбити текст у зворотному напрямку від курсора до початку рядка. .TP \fBbackward\-kill\-line (C\-x Rubout)\fP Вбити до початку поточного рядка. З від'ємним числовим аргументом, вбити вперед від курсора до кінця рядка. .TP \fBunix\-line\-discard (C\-u)\fP .\" There is no real difference between this and backward-kill-line Вбити назад від точки до початку рядка. Вбитий текст зберігається в кільці вбитого. .TP \fBkill\-whole\-line\fP Зачистити усі символи у поточному рядку без зв'язку з позицією. .TP \fBkill\-word (M\-d)\fP Вбити від точки до кінця поточного слова, або якщо між словами, до кінця наступного слова. Межі слів такі ж самі, як в \fBforward\-word\fP. .TP \fBbackward\-kill\-word (M\-Rubout)\fP Зачистити слово за позицією. Межі слів є тими самими, які використовуються \fBbackward\-word\fP. .TP \fBshell\-kill\-word (M\-C\-d)\fP Вбити від точки до кінця поточного слова, або якщо між словами, до кінця наступного слова. Межі слів такі ж самі, як в \fBshell\-forward\-word\fP. .TP \fBshell\-backward\-kill\-word\fP Зачистити слово за позицією. Межі слів є тими самими, які використовуються \fBshell\-backward\-word\fP. .TP \fBunix\-word\-rubout (C\-w)\fP Зачистити слово за позицією, використовуючи пробіл як можу слова. Зачищений текст буде збережено у кільці зачищення. .TP \fBunix\-filename\-rubout\fP Вбити слово за точкою, використовуючи пробіл та символ похилої, як межі слів. Вбитий текст зберігається у кільці вбитого. .TP \fBdelete\-horizontal\-space (M\-\e)\fP Вилучити усі пробіли і табуляції навколо позиції. .TP \fBkill\-region\fP Зачистити текст у поточній області. .TP \fBcopy\-region\-as\-kill\fP Копіювати текст до області, щоб зачистити буфер, щоб його можна було викинути негайно. .TP \fBcopy\-backward\-word\fP Копіювати слово до позиції до буфера зачищення. Межі слова є тими самими, що і для \fBbackward\-word\fP. .TP \fBcopy\-forward\-word\fP Копіювати слово після позиції до буфера зачищення. Межі слова є тими самими, що і для \fBforward\-word\fP. .TP \fByank (C\-y)\fP Висмикнути верхівку кільця вбитого в буфер на точці. .TP \fByank\-pop (M\-y)\fP Повернути кільце вбитого, і висмикнути нову верхівку. Працює лише після \fByank\fP або \fByank\-pop\fP. .PD .SS "Числові аргументи" .PD 0 .TP \fBdigit\-argument (M\-0, M\-1, \fP.\|.\|.\fB, M\-\-)\fP Додати цю цифру до аргументу, що вже збирається, або почати новий аргумент. M\-\- починає негативний аргумент. .TP \fBuniversal\-argument\fP Це інший спосіб вказати аргумент. Якщо після цієї команди вказано одну або декілька цифр, можливо, разом із початковим знаком «мінус», ці цифри визначать аргумент. Якщо після команди вказано цифри, повторне виконання \fBuniversal\-argument\fP завершує числовий аргумент, інакше буде проігноровано. У особливому випадку, якщо за цією командою одразу вказано символ, який не є ні цифрою, ні знаком «мінус», лічильник аргументу для наступної команди буде помножено на чотири. Початковим значенням лічильника аргументу є одиниця, тому виконання цієї функції уперше збільшує лічильник до чотирьох, наступне виконання — до шістнадцяти, тощо. .PD .SS Доповнення .PD 0 .TP \fBcomplete (TAB)\fP Спробувати виконати доповнення тексту перед позицією. \fBBash\fP спробує виконати доповнення, спочатку перевіривши за будь\-якими програмованими доповненнями для слова команди (див. \fBПрограмоване доповнення\fP нижче), otherwise, користуючись текстом як змінною (якщо текст починається з \fB$\fP), іменем користувача (якщо текст починається з \fB\*~\fP), назвою вузла (якщо текст починається з \fB@\fP) або командою (включно з альтернативами, функціями і вбудованими командами) послідовно. Якщо нічого не буде знайдено, буде виконано резервну спробу доповнення за назвою файла. .TP \fBpossible\-completions (M\-?)\fP Вивести список можливих варіантів доповнення тексту перед крапкою. Під час показу доповнень \fBreadline\fP встановлює кількість позицій, які буде використано для показу, на значення \fBcompletion\-display\-width\fP, значення змінної оболонки .SM \fBCOLUMNS\fP або ширину екрана саме у такому порядку. .TP \fBinsert\-completions (M\-*)\fP Вставити усі доповнення тексту, які могло б бути створено \fBpossible\-completions\fP, перед позицією, з відокремленням пробілами. .TP \fBmenu\-complete\fP Подібно до \fBcomplete\fP, але замінює слово для доповнення єдиним відповідником зі списку можливих доповнень. Повторне виконання \fBmenu\-complete\fP крокує через список можливих доповнень, вставляючи кожен відповідник по черзі. В кінці списку доповнень, \fBmenu\-complete\fP вмикає гудок (контрольовано параметром \fBbell\-style\fP) та відновлюється початковий текст. Аргумент \fIn\fP пересуває \fIn\fP позицій вперед в списку відповідників; можна використати негативний аргумент для пересування назад по списку. Ця команда призначена бути прив'язаною до \fBTAB\fP, але є типово неприв'язаною. .TP \fBmenu\-complete\-backward\fP Ідентично до \fBmenu\-complete\fP, але пересуває назад через список можливих доповнень, як ніби \fBmenu\-complete\fP було надано негативний аргумент. Ця команда є типово неприв'язаною. .TP \fBexport\-completions\fP Виконати автодоповнення слова перед точкою, як описано вище, і записати список можливих автодоповнень у вихідний потік \fBreadline\fP, використовуючи наступний формат із записом даних в окремі рядки: .RS .PD .IP \(bu .PD 0 кількість відповідників \fIN\fP; .IP \(bu слово, яке доповнюють; .IP \(bu \fIS\fP:\fIE\fP, де \fIS\fP і \fIE\fP є початковим і кінцевим зсувами слова у буфері рядків \fBreadline\fP; тоді .IP \(bu кожна відповідність, по одній на рядок .RE .PD .IP Якщо відповідників немає, першим рядком буде .Q 0 , і ця команда не виводить жодних даних після \fIS\fP:\fIE\fP. Якщо є лише один збіг, ця команда виводить один рядок, що його містить. Якщо є більше одного збігу, ця команда друкує спільний префікс збігів, який може бути порожнім, у першому рядку після \fIS\fP:\fIE\fP, а потім збіги у наступних рядках. У цьому випадку \fIN\fP включатиме перший рядок зі спільним префіксом. .IP Користувач або програма повинні мати можливість враховувати можливість появи порожнього рядка. Мета полягає в тому, щоб користувач або програма зчитували \fIN\fP рядків після рядка, що містить \fIS\fP:\fIE\fP, щоб отримати список збігів. Цю команду типово не пов'язано зі скороченнями. .TP \fBdelete\-char\-or\-list\fP Вилучає символ під курсором, якщо він не на початку або в кінці рядка (як \fBdelete\-char\fP). Якщо в кінці рядка, поводиться ідентично до \fBpossible\-completions\fP. Ця команда типово неприв'язана. .TP \fBcomplete\-filename (M\-/)\fP Спробувати доповнити назву файла за текстом до позиції. .TP \fBpossible\-filename\-completions (C\-x /)\fP Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст назвою файла. .TP \fBcomplete\-username (M\-\*~)\fP Спробувати доповнити ім'я користувача за текстом до позиції. .TP \fBpossible\-username\-completions (C\-x \*~)\fP Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст іменем користувача. .TP \fBcomplete\-variable (M\-$)\fP Спробувати доповнити змінну оболонки за текстом до позиції. .TP \fBpossible\-variable\-completions (C\-x $)\fP Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст змінної оболонки. .TP \fBcomplete\-hostname (M\-@)\fP Спробувати доповнити назву вузла за текстом до позиції. .TP \fBpossible\-hostname\-completions (C\-x @)\fP Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст назвою вузла. .TP \fBcomplete\-command (M\-!)\fP Спробувати доповнення на тексті перед точкою, розглядаючи її, як назву команди. Доповнення команди намагається знайти відповідник тексту між псевдонімами, зарезервованими словами, функціями оболонки, вбудованими елементами оболонки, та, зрештою, назвами виконуваних файлів, в саме такому порядку. .TP \fBpossible\-command\-completions (C\-x !)\fP Вивести можливі варіанти доповнення тексту до позиції, вважаючи текст назвою команди. .TP \fBdynamic\-complete\-history (M\-TAB)\fP Спробувати доповнення на тексті перед точкою, порівнюючи текст з рядками з журналу щодо потенційних відповідників доповнення. .TP \fBdabbrev\-expand\fP Спробувати доповнення меню на тексті перед точкою, порівнюючи текст з рядками зі списку журналу щодо потенційних відповідників доповнення. .TP \fBcomplete\-into\-braces (M\-{)\fP Виконати доповнення назви файла і вставити список можливих доповнень у фігурних дужках так, щоб список став доступним оболонці (див. \fBРозгортання у дужках\fP вище). .PD .SS "Макроси клавіатури" .PD 0 .TP \fBstart\-kbd\-macro (C\-x (\^)\fP Почати збереження введених символів до поточного макросу клавіатури. .TP \fBend\-kbd\-macro (C\-x )\^)\fP Зупинити збереження введених символів до поточного макросу клавіатури і зберегти визначення. .TP \fBcall\-last\-kbd\-macro (C\-x e)\fP Повторно виконати останній визначений макрос клавіатури, надіславши символи макроса так, наче їх було введено з клавіатури. .TP \fBprint\-last\-kbd\-macro ()\fP Вивести останній макрос клавіатури, визначений у форматі, який можна використати у файлі \fIinputrc\fP. .PD .SS Різне .PD 0 .TP \fBre\-read\-init\-file (C\-x C\-r)\fP Прочитати вміст файла \fIinputrc\fP і включити усі прив'язки або визначення змінних, які там буде знайдено. .TP \fBabort (C\-g)\fP Перервати виконання поточної команди редагування і відтворити гудок термінала (який встановлюється параметром \fBbell\-style\fP). .TP \fBdo\-lowercase\-version (M\-A, M\-B, M\-\fP\fIx\fP\fB, \fP.\|.\|.\fB)\fP Якщо метафікований символ \fIx\fP є символом верхнього регістру, виконати команду, яку пов'язано із відповідним метафікованим символом нижнього регістру. Поведінку не визначено, якщо \fIx\fP вже є символом нижнього регістру. .TP \fBprefix\-meta (ESC)\fP Метафікувати наступний введений символ. .SM \fBESC\fP \fBf\fP є тим самим, що і \fBMeta\-f\fP. .TP \fBundo (C\-_, C\-x C\-u)\fP Нарощувальне скасування дій, яке окремо записується для кожного рядка. .TP \fBrevert\-line (M\-r)\fP Скасувати усі зміни, які було внесено до цього рядка. Результат буде подібним до виконання команди \fBundo\fP достатню для повернення рядка до початкового стану кількість разів. .TP \fBtilde\-expand (M\-&)\fP Виконати тильда\-розгортання для поточного слова. .TP \fBset\-mark (C\-@, M\-<пропуск>)\fP Встановити позначку у позицію. Якщо вказано числовий аргумент, буде встановлено позначку у відповідній числовій позиції. .TP \fBexchange\-point\-and\-mark (C\-x C\-x)\fP Поміняти місцями позиці і позначку. Для поточної позиції курсора буде встановлено збережену позицію, а попередню позицію курсора буде збережено як позначку. .TP \fBcharacter\-search (C\-])\fP Буде прочитано символ, після чого позицію буде пересунуто до наступного входження цього символу. Використання від'ємного значення аргументу призведе до переходу до попередніх входжень. .TP \fBcharacter\-search\-backward (M\-C\-])\fP Буде прочитано символ, після чого позицію буде пересунуто до попереднього входження цього символу. Використання від'ємного значення аргументу призведе до переходу до наступних входжень. .TP \fBskip\-csi\-sequence\fP Прочитати достатньо символів для складання багатоклавішної послідовності, подібної до тієї, яку визначено для клавіш, подібних до Home і End. Такі послідовності починаються з індикатора керівної послідовності (CSI), зазвичай, \fIESC [\fP. Якщо цю послідовність прив'язано до .Q \ee[ , , клавіші, з яких складаються такі послідовності не працюватимуть, якщо їх не пов'язано явно із командою \fBreadline\fP, — не вставлятимуть символи клавіш до буфера редагування. Типово, не прив'язано, але, зазвичай, прив'язують до \fIESC [\fP. .TP \fBinsert\-comment (M\-#)\fP Без числового аргументу на початку поточного рядка буде вставлено значення змінної \fBreadline\fP \fBcomment\-begin\fP. Якщо вказано числовий аргумент, ця команда працюватиме як перемикач: якщо символи на початку рядка не збігаються зі значенням \fBcomment\-begin\fP, буде вставлено це значення, в іншому ж випадку, символи \fBcomment\-begin\fP буде вилучено з початку рядка. В обох випадках рядок буде прийнято так, наче було вставлено символ нового рядка. За типового значення \fBcomment\-begin\fP ця команда перетворює поточний рядок на коментар оболонки. Якщо у результаті застосування числового аргументу символ коментування буде вилучено, рядок буде виконано командною оболонкою. .TP \fBspell\-correct\-word (C\-x s)\fP Виконати виправлення у поточному слові, вважаючи його назвою каталогу або файла, у той самий спосіб, що і для параметра оболонки \fBcdspell\fP. Межі слів є тими самими, що використовуються у \fBshell\-forward\-word\fP. .TP \fBglob\-complete\-word (M\-g)\fP Слово перед позицією буде оброблено як взірець для розгортання шляху з неявним додаванням зірочки наприкінці. Цей взірець буде використано для створення списку відповідних назв файлів для можливого доповнення. .TP \fBglob\-expand\-word (C\-x *)\fP Слово перед позицією буде оброблено як взірець для розгортання шляху. Буде вставлено список відповідних назв файлів із заміною слова. Якщо буде передано числовий аргумент, перед розгортанням шляху до слова буде неявним чином дописано \fB*\fP наприкінці. .TP \fBglob\-list\-expansions (C\-x g)\fP Вивести список розгортань, які було б створено за допомогою \fBglob\-expand\-word\fP і перемалювати рядок. Якщо буде передано числовий аргумент, перед розгортанням шляху до слова буде неявним чином дописано \fB*\fP наприкінці. .TP \fBdump\-functions\fP Вивести усі функції та їхні прив'язки до комбінацій клавіш до потоку виведення \fBreadline\fP. Якщо вказано числовий аргумент, виведені дані буде форматовано так, щоб їх можна було зробити частиною файла \fIinputrc\fP. .TP \fBdump\-variables\fP Вивести усі придатні до встановлення змінні \fBreadline\fP та їхні значення до потоку виведення \fBreadline\fP. Якщо вказано числовий аргумент, виведені дані буде форматовано так, щоб їх можна було зробити частиною файла \fIinputrc\fP. .TP \fBdump\-macros\fP Вивести усі послідовності клавіш \fBreadline\fP, які пов'язано із макросами та рядки, які вони виводять до потоку виведення \fBreadline\fP. Якщо вказано числовий аргумент, виведення буде форматовано таким чином, щоб його можна було зробити частиною файла \fIinputrc\fP. .TP \fBexecute\-named\-command (M\-x)\fP Прочитати назву пов'язаної команди \fBreadline\fP з вхідних даних і виконати дію, з якою вона пов'язана, так, ніби послідовність клавіш, з якою вона була пов'язана, було виявлено у вхідних даних. Якщо цій функції передано числовий аргумент, вона передає цей аргумент функції, яку вона виконує. .TP \fBdisplay\-shell\-version (C\-x C\-v)\fP Вивести дані щодо версії для поточного екземпляра \fBbash\fP. .PD .SS "Запрограмоване доповнення" Якщо буде здійснено спробу доповнення слова для команди або аргументу команди, для якої специфікацію доповнення (\fIcompspec\fP) було визначено з використанням вбудованої команди \fBcomplete\fP (див. .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче), \fBreadline\fP викликає можливості програмованого доповнення. .PP Спочатку, \fBbash\fP визначає назву команди. Якщо для команди визначено compspec, цей compspec буде використано для створення списку можливих доповнень слова. Якщо слово команди є порожнім рядком (спроба автодоповнення на початку порожнього рядка), \fBbash\fP використовує будь\-яку специфікацію compspec, визначену за допомогою параметр \fB\-E\fP, для \fBcomplete\fP. Параметр \fB\-I\fP для \fBcomplete\fP вказує, що слово команди є першим непризначеним словом у рядку або після роздільника команди, такого як \fB;\fP або \fB|\fP. Зазвичай це вказує на автодоповнення назви команди. .PP Якщо словом команди є повна назва шляху, \fBbash\fP спочатку шукатиме compspec для повної назви шляху. Якщо для повної назви шляху не буде знайдено compspec, \fBbash\fPбуде виконано спробу знайти compspec для частини, яка слідує за кінцевим символом похилої риски. Якщо ці пошуки не дадуть результату у формі compspec або comspec не існує для слова команди, типово, \fBbash\fP буде використано будь\-який compspec, який визначено за допомогою параметра \fB\-D\fP команди \fBcomplete\fP. Якщо типового compspec немає, \fBbash\fP спробує розгортання альтернатив для слова команди, як остаточний резервний варіант, і спробує знайти compspec для слова команди, яке є результатом будь\-якого успішного розгортання. .PP Якщо compspec не знайдено, \fBbash\fP виконує типово автодоповнення, як описано вище у розділі \fBДоповнення\fP. В іншому випадку, після того, як compspec знайдено, \fBbash\fP використовує її для створення списку відповідних слів. .PP Спочатку, \fBbash\fP буде використано \fIдії\fP, які визначено compspec. Повернуто буде лише відповідники, префіксом яких є слово, яке доповнюють. Якщо для доповнення назв файлів або каталогів використано параметр \fB\-f\fP або \fB\-d\fP, для фільтрування відповідників \fBbash\fP буде використано значення змінної оболонки .SM \fBFIGNORE\fP. .PP Далі програмоване доповнення створює відповідники, які задано взірцем розгортання шляхів для параметра \fB\-G\fP, наданого як аргумент. Створені за взірцем слова не обов'язково повинні збігатися зі словом, яке доповнюють. Для фільтрування відповідників \fBbash\fP використає змінну .SM \fBFIGNORE\fP, але не використовуватиме змінну оболонки .SM \fBGLOBIGNORE\fP. .PP Далі, механізмом доповнення буде розглянуто рядок, який задано як аргумент параметра \fB\-W\fP. Спочатку, рядок буде поділено на слова з використанням символів в особливій змінній .SM \fBIFS\fP, як роздільників. Буде також взято до уваги нейтралізацію символів в оболонці. Зокрема буде враховано екранування лапками всередині рядка, щоб забезпечити роботу механізму для слів, що містять метасимволи оболонки або символи у значенні .SM \fBIFS\fP. Потім кожне слово буде розгорнуто з використання розгортання у фігурних дужках, розгортання тильди, розгортання параметрів і змінних, заміни команд та арифметичних обчислень, які описано вище у розділі .SM \fBРОЗГОРТАННЯ\fP. Результати буде поділено за правилами, які описано вище у розділі \fBПоділ на слова\fP. Відповідність результатів слову, яке доповнюють, буде встановлено з використанням доповнюваного слова як префікса. Відповідні слова стануть можливими варіантами доповнення. .PP Після того, як ці збіги згенеровано, \fBbash\fP виконує будь\-яку функцію оболонки або команду з параметрами \fB\-F\fP та \fB\-C\fP. Коли буде викликано команду або функцію, \fBbash\fP встановлює значення змінних .SM \fBCOMP_LINE\fP, .SM \fBCOMP_POINT\fP, .SM \fBCOMP_KEY\fP і .SM \fBCOMP_TYPE\fP отримують значення, як описано вище в розділі \fBЗмінні оболонки\fP. Якщо викликається функція оболонки, встановлюються також змінні .SM \fBCOMP_WORDS\fP і .SM \fBCOMP_CWORD\fP. Під час виклику функції або команди, першим аргументом (\fB$1\fP) є назва команди, аргументи якої доповнюються, другий аргумент (\fB$2\fP) — це слово, яке доповнюється, а третій аргумент (\fB$3\fP) — це слово, що передує в поточному командному рядку слову, яке доповнюється. Фільтрування згенерованих доповнень за доповнюваним словом не виконується; функція або команда має повну свободу щодо генерування збігів, і збіг не повинен виконуватися для префікса слова. .PP Першою буде виконано будь\-яку функцію, яку вказано за допомогою \fB\-F\fP. Функція може використовувати усі можливості оболонки, зокрема вбудовану команди \fBcompgen\fP і \fBcompopt\fP, які описано нижче, для створення відповідників. Функція має записувати усі можливі варіанти доповнень до змінної\-масиву .SM \fBCOMPREPLY\fP, по одному варіанту на елемент масиву. .PP Далі, буде викликано будь\-яку команду, яку вказано за допомогою параметра \fB\-C\fP, у середовищі, яке є еквівалентним до заміни команди. Команда має вивести список доповнень, по одному на рядок, до стандартного виведення. Для екранування символу нового рядка, якщо потрібно, можна скористатися символом зворотної похилої риски. Ці доповнення буде додано до набору можливих доповнень. .PP Після створення \fBbash\fP всіх можливих доповнень, до списку буде застосовано будь\-який фільтр, визначений з параметром \fB\-X\fP. Фільтр \- це шаблон, який використовується для розujhnfння шляху; \fB&\fP в шаблоні замінюється текстом слова, що доповнюється. Літерал \fB&\fP можна екранувати за допомогою зворотної похилої риски; вона видаляється перед випробуванням збігу. Будь\-яке доповнення, яке відповідає шаблону, буде вилучено зі списку. Початковий \fB!\fP заперечує шаблон; у цьому випадку \fBbash\fP буде вилучено будь\-яке доповнення, що не відповідає шаблону. Якщо ввімкнено параметр оболонки \fBnocasematch\fP, відповідність перевіряється \fBbash\fP без урахування регістру літер. .PP Нарешті, програмоване доповнення додає будь\-який префікс і суфікс, зазначені параметрами \fB\-P\fP і \fB\-S\fP, відповідно, до кожного пункту списку доповнення, а результат повертається до \fBreadline\fP як список можливих доповнень. .PP Якщо раніше застосовані дії не створять жодного відповідника, і було передано параметр \fB\-o dirnames\fP команди \fBcomplete\fP при визначенні compspec, буде виконано спробу доповнення назви каталогу. .PP Якщо при визначенні compspec команді \fBcomplete\fP було передано параметр \fB\-o plusdirs\fP, \fBbash\fP буде виконано спробу доповнення назви каталогу, а усі відповідники буде додано до набору можливих доповнень. .PP Типово, якщо знайдено compspec, усі створені за ним результати буде повернуто до коду доповнення як повний набір можливих доповнень. Спроби скористатися типовими доповненням \fBbash\fP виконано не буде, а типове доповнення назв файлів для \fBreadline\fP буде вимкнено. Якщо вказано параметр \fB\-o bashdefault\fP команди \fBcomplete\fP при визначенні compspec, і comspec не дає відповідників, \fBbash\fP буде виконано спробу скористатися типовими доповненнями. Якщо якщо використано compspec і, якщо було виконано спробу, типові автодоповнення \fBbash\fP не дають збігів, і параметр \fB\-o default\fP було передано \fBcomplete\fP під час визначення специфікації compspec, програмоване автодоповнення виконує типове автодоповнення \fBreadline\fP. .PP Параметри, які передаються \fBcomplete\fP та \fBcompopt\fP, можуть керувати тим, як \fBreadline\fP обробляє автодоповнення. Наприклад, параметр \fI\-o fullquote\fP повідомляє \fBreadline\fP про те, що потрібно брати у лапки збіги так, ніби це назви файлів. Див. опис \fBcomplete\fP нижче, щоб дізнатися більше. .PP Якщо compspec вказує, що бажаним є доповнення назви каталогу, програмовані функції доповнення примусять \fBreadline\fP дописати символ похилої риски наприкінці доповнених назв, які є символічними посиланням на каталоги з використанням значення змінної \fBreadline\fP \fBmark\-directories\fP, незалежно від значення змінної \fBreadline\fP \fBmark\-symlinked\-directories\fP. .PP Є деяка підтримка динамічної модифікації доповнення. Це корисно, якщо застосовується в поєднанні із типовим доповненням, зазначеним у \fBcomplete \-D\fP. Функції оболонки, що виконуються як функції доповнення, можуть вказувати, що доповнення слід повторити, повернувши стан виходу 124. Якщо функція оболонки повертає 124 і змінює compspec, пов’язаний з командою, для якої виконується спроба доповнення (подається як перший аргумент, коли функція виконується), програмоване доповнення перезапускається з початку зі спробою знайти новий compspec для цієї команди. Це дозволяє динамічно будувати набір доповнень у міру спроб доповнення, а не завантажувати всі одночасно. .PP Наприклад, якщо припустити, що існує бібліотека compspec, кожна з яких зберігається у файлі, що відповідає назві команди, така функція доповнення типово завантажуватиме доповнення динамічно: .RS .EX .nf _completion_loader() { . \*"/etc/bash_completion.d/$1.sh\*".if \n(LL<80n \{\ \e .br .ti +4n .\} >/dev/null 2>&1 && return 124 } complete \-D \-F _completion_loader.if \n(LL<80n \{\ \e .br .ti +4n .\} \-o bashdefault \-o default .fi .EE .RE .SH ЖУРНАЛ Якщо увімкнено параметр \fB\-o history\fP вбудованої команди \fBset\fP, оболонка надає доступ до \fIжурналу команд\fP, \- списку команд, уведених раніше. Значення змінної .SM \fBHISTSIZE\fP визначає кількість команд для збереження в списку журналу. Зберігається текст останніх .SM \fBHISTSIZE\fP команд (типово \- 500). Оболонка зберігає кожну команду в списку журналу перед розширенням параметрів і змінних (див. вище .SM \fBРОЗШИРЕННЯ\fP), але після розгортання за журналом, залежно від значень змінних оболонки .SM \fBHISTIGNORE\fP та .SM \fBHISTCONTROL\fP. .PP On startup, \fBbash\fP initializes the history list by reading history entries from the file named by the .SM \fBHISTFILE\fP variable (default .FN \*~/.bash_history ). That file is referred to as the \fIhistory file\fP. The history file is truncated, if necessary, to contain no more than the number of history entries specified by the value of the .SM \fBHISTFILESIZE\fP variable. If .SM \fBHISTFILESIZE\fP is unset, or set to null, a non\-numeric value, or a numeric value less than zero, the history file is not truncated. .PP Під час читання файла журналу рядки, які починаються із символу коментаря журналу, за яким одразу йде цифра, вважатимуться позначками часу для наступного рядка журналу. Ці позначки часу, якщо потрібно, буде показано залежно від значення змінної .SM \fBHISTTIMEFORMAT\fP. За наявності, позначки часу журналу розмежовують записи журналу, що надає змогу створювати багаторядкові записи. .PP Коли оболонка з увімкненим записуванням журналу завершує роботу, \fBbash\fP копіює останні записи .SM \fB$HISTSIZE\fP зі списку журналу до .SM \fB$HISTFILE\fP. Якщо увімкнено параметр оболонки \fBhistappend\fP (див. опис \fBshopt\fP у розділі .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP нижче), \fBbash\fP додає записи до файла журналу, інакше він перезаписує файл журналу. Якщо .SM \fBHISTFILE\fP не встановлено або має порожнє значення, або якщо запис до файла журналу неможливий, журнал не зберігається. Після збереження журналу \fBbash\fP обріза файл журналу до не більше ніж .SM \fBHISTFILESIZE\fP рядків, як описано вище. .PP Якщо встановлено значення змінної .SM \fBHISTTIMEFORMAT\fP, оболонка записує відомості про позначку часу, пов'язану з кожним записом журналу, до файла журналу, позначаючи їх символом коментаря журналу, тому позначки часу зберігаються протягом усіх сеансів оболонки. Щоб відрізнити позначки часу від інших рядків журналу, використовується символ коментаря журналу. Як і вище, при використанні .SM \fBHISTTIMEFORMAT\fP позначки часу розмежовують багаторядкові записи журналу. .PP Вбудовану команду \fBfc\fP (див. нижче .SM \fBSHELL BUILTIN COMMANDS\fP) можна використати для показу або редагування та повторного виконання частини списку журналу. Вбудовану команду \fBhistory\fP може показувати або змінювати список журналу та керування файлом журналу. При використанні редагування командного рядка, в кожному режимі редагування, який надає доступ до списку журналу, доступні команди пошуку. .PP Оболонка дозволяє керувати тим, які команди зберігаються в списку журналу. Змінні .SM \fBHISTCONTROL\fP і .SM \fBHISTIGNORE\fP використовують для збереження лише пеану підмножину введених команд. Якщо увімкнено параметр оболонки \fBcmdhist\fP, він змушує оболонку намагатися зберегти кожен рядок багаторядкової команди в одному записі журналу, додаючи крапку з комою, де необхідно, щоб зберегти синтаксичну правильність. Параметр оболонки \fBlithist\fP змінює \fBcmdhist\fP шляхом збереження команди зі вставленими розривами рядків замість крапки з комою. Щоб дізнатись про налаштування та скасування параметрів оболонки, див. нижче опис вбудованої команди \fBshopt\fP під заголовком .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP. .SH "ДОПОВНЕННЯ ЗА ЖУРНАЛОМ" Оболонка підтримує функцію розгортання за журналом, подібну до розгортання за журналом в \fBcsh\fP. У цьому розділі описано доступні синтаксичні засоби. .PP Типово, розгортання з журналу увімкнено для інтерактивних оболонок і його можна вимкнути за допомогою параметру \fB+H\fP вбудованої команди \fBset\fP (див. нижче .SM \fBВБУДОВАНІ КОМАНДИ ОБОЛОНКИ\fP). Неінтерактивні оболонки типово не виконують розгортання за журналом, але його можна увімкнути за допомогою .Q "set -H" . .PP Розширення журналу вводить слова зі списку журналу у вхідний потік, що дозволяє легко повторювати команди, вставляти аргументи попередньої команди в поточний рядок уведення або швидко виправляти помилки в попередніх командах. .PP Розгортання журналу виконується одразу після прочитання повного рядка, до того, як оболонка розіб'є його на слова, і виконується для кожного рядка окремо. Оболонка намагається повідомити функції розгортання за журналом про те, що екранування лапками з попередніх рядків все ще діє. .PP Процедура відбувається у два кроки. Перший — визначення того, який запис списку журналу використовувати під час заміни. Другий — вибір частини цього запису для включення до поточного. .PP Вибраний у журналі запис називається \fIподією\fP, а частини цього запису, обробку яких виконує оболонка, – це \fIслова\fP. Для роботи з вибраними словами доступні різні \fIмодифікатори\fP. Запис розбивається на слова так само, як і під час читання вхідних даних, таким чином, що кілька слів, розділених \fIметасимволом\fP, які взято у лапки, вважаються одним словом. \fIПозначення події\fP вибирає подію, необов'язкове \fIпозначення слова\fP вибирає слова з події, а також доступні різні додаткові \fIмодифікатори\fP для роботи з вибраними словами. .PP Розгортання журналу впроваджуються за допомогою символу розгортання за журналом, типовим значенням якого є \^\fB!\fP\^. Розгортання журналу можуть з'являтися будь\-де у вхідних даних, але не вкладаються одне в одне. .PP Екранувати символ розгортання за журналом можуть лише зворотна похила риска (\^\fB\e\fP\^) та одинарні лапки, але символ розгортання за журналом також вважається лапкою, якщо він безпосередньо передує завершальним подвійним лапкам у рядку, взятому у подвійні лапки. .PP Деякі символи блокують розгортання за журналом, якщо з'являються зразу після символу розгортання за журналом, навіть якщо він не в лапках: пропуск, табуляція, новий рядок, повернення каретки, \fB=\fP та інші визначені вище метасимволи оболонки. .PP Існує спеціальне скорочення для підставляння, яке активне, якщо першим символом у рядку є символ \fIшвидкого підставляння\fP (описаний вище у розділі \fBhischar\fP). Воно вибирає попередній запис списку журналу, використовуючи позначення події, еквівалентне \fB!!\fP, і замінює один рядок на інший у цьому записі. Це описано нижче в розділі \fBПозначення подій\fP. Це єдине розгортання за журналом, яке не починається із символу розгортання за журналом. .PP Для коригування поведінки розгортання за журналом можна скористатися декількома параметрами оболонки (див. опис вбудованої команди \fBshopt\fP нижче), якщо увімкнено параметр оболонки \fBhistverify\fP і використано \fBreadline\fP, заміни за журналом не буде негайно передано обробнику оболонки. Замість цього, розгорнутий рядок буде перезавантажено до буфера редагування \fBreadline\fP для подальшого внесення змін. Якщо використано \fBreadline\fP і увімкнено параметр оболонки \fBhistreedit\fP, невдалу заміну за журналом буде перезавантажено до буфера редагування \fBreadline\fP для виправлення. .PP Параметром \fB\-p\fP вбудованої команди \fBhistory\fP можна скористатися для перегляду того, якими будуть результати доповнення за журналом, перш ніж ви ним скористаєтеся. Параметром \fB\-s\fP вбудованої команди \fBhistory\fP можна скористатися для додавання команд наприкінці списку журналу без їхнього виконання, так, щоб ними можна було згодом скористатися, викликавши повторно. .PP Оболонка уможливлює керування різноманітними символами, які використовує механізм розгортання за журналом (див. опис \fBhistchars\fP вище у розділі \fBЗмінні оболонки\fP). Оболонка використовує символ коментування у журналі для створення часових позначок при записі файла журналу. .SS "Показник подій" Показник подій — це посилання на запис у списку журналу. Позначення події складається з частини слова, що починається із символу розгортання за журналом і закінчується позначенням слова, якщо воно є, або кінцем слова. Якщо посилання не абсолютне, події є відносними до поточної позиції у списку журналу. .PP .PD 0 .TP \fB!\fP Розпочати заміну за журналом, якщо далі не вказано \fBпропуск\fP, символ нового рядка, символ повернення каретки, = або, якщо увімкнено параметр оболонки \fBextglob\fP за допомогою вбудованої команди \fBshopt\fP (. .TP \fB!\fP\fIn\fP Посилання на запис \fIn\fP у списку журналу. .TP \fB!\-\fP\fIn\fP Посилання на поточний запис мінус \fIn\fP. .TP \fB!!\fP Посилання на попередній запис. Синонім .Q !\-1 . .TP \fB!\fP\fIрядок\fP Вказує на найсвіжішу команду, яка передує поточній позиції у списку журналу і починається з рядка \fIрядок\fP. .TP \fB!?\fP\fIрядок\fP\fB[?]\fP Вказує на найсвіжішу команду, яка передує поточній позиції у списку журналу і починається з рядка \fIрядок\fP. Кінцевий \fB?\fP можна не вказувати, якщо після \fIрядка\fP одразу йде символ нового рядка. Якщо \fIрядок\fP не вказано, буде використано рядок з найсвіжішого пошуку. Якщо попереднього рядка пошуку не існує, буде повідомлено про помилку. .TP \fB\d\s+2\*^\s-2\u\fP\fIstring1\fP\fB\d\s+2\*^\s-2\u\fP\fIstring2\fP\fB\d\s+2\*^\s-2\u\fP Швидке підставляння. Повторити попередню команду, замінивши \fIрядок1\fP на \fIрядок2\fP. Еквівалент .Q !!:s\d\s+2\*^\s-2\u\fIstring1\fP\d\s+2\*^\s-2\u\fIstring2\fP\d\s+2\*^\s-2\u (див. \fBМодифікатори\fP нижче). .TP \fB!#\fP Увесь рядок команди, який уже введено. .PD .SS "Показники слів" Вказівники слів використовують для вибору бажаних слів з події. Вони є необов'язковими; якщо вказівник слова не надано, для розгортання за журналом буде використано усю подію. \fB:\fP відокремлює специфікацію події від вказівника слів. Двокрапку можна пропустити, якщо вказівник слова починається з \fB^\fP, \fB$\fP, \fB*\fP, \fB\-\fP або \fB%\fP. Слова нумерують з початку рядка. Перше слово матиме номер 0 (нуль). Слова буде вставлено до поточного рядка із відокремленням одинарним пробілом. .PP .PD 0 .TP \fB0 (нуль)\fP Нульове слово. Для оболонки це слово команди. .TP \fIn\fP \fIn\fP\-е слово. .TP \fB\*^\fP Перший аргумент: слово 1. .TP \fB$\fP Останнє слово. Зазвичай, це останній аргумент, але його буде розгорнуто до нульового слова, якщо у рядку буде лише одне слово. .TP \fB%\fP Перше слово, знайдене за останнім пошуком .Q ?\fIstring\fP? пошук, якщо рядок пошуку починається із символу, який є частиною слова. Типово пошук починається з кінця кожного рядка та продовжується до початку, тому перше слово, яке знайдено, — це те, яке перебуває найближче до кінця рядка. .TP \fIx\fP\fB\-\fP\fIy\fP Діапазон слів; .Q \-\fIy\fP є скороченням від .Q 0\-\fIy\fP . .TP \fB*\fP Усі слова, окрім нульового. .Q \fI1\-$\fP . Не є помилкою використання \fB*\fP, якщо у події точно одне слово; у такому випадку розгортається до порожнього рядка. .TP \fBx*\fP Скорочення від \fIx\-$\fP. .TP \fBx\-\fP Скорочення \fIx\-$\fP, подібно до \fBx*\fP, але пропускає останнє слово. Якщо не вказано \fBx\fP, типовим значенням є 0. .PD .PP Якщо вказано слово\-визначення без специфікації події, як подію буде використано попередню команду, еквівалент \fB!!\fP. .SS Модифікатори Після необов'язкового вказівника слова розгортання може включати послідовність одного або декількох наступних модифікаторів, перед кожним з яких має бути .Q : . Модифікатори модифікують або змінюють слово або слова, які вибрано з події журналу. .PP .PD 0 .TP \fBh\fP Вилучити кінцевий компонент шляху, лишивши лише початок. .TP \fBt\fP Вилучити усі початкові компоненти шляху, лишивши лише кінець. .TP \fBr\fP Вилучити кінцевий суфікс у формі \fI.xxx\fP, лишивши лише основну назву. .TP \fBe\fP Вилучити усе, окрім завершального суфікса. .TP \fBp\fP Вивести нову команду, але не виконувати її. .TP \fBq\fP Нейтралізувати підставлені слова, екрануючи подальші підставлення. .TP \fBx\fP Нейтралізувати замінені слова, як з \fBq\fP, але з поділом на слова за \fBпропусками\fP або символами нового рядка. Модифікатори \fBq\fP і \fBx\fP є взаємно виключними; у розгортанні буде використано лише останній з використаних. .TP \fBs/\fP\fIстарий\fP\fB/\fP\fIновий\fP\fB/\fP Замінити на \fIновий\fP перше входження запису \fIстарий\fP у рядку події. Можна скористатися будь\-яким символом як роздільником замість /. Кінцевий роздільник є необов'язковим, якщо він є останнім символом у рядку події. Одинарна зворотна похила риска нейтралізує роздільник у записах \fIстарий\fP і \fIновий\fP. Якщо у записі \fIновий\fP використано &, його буде замінено на запис \fIстарий\fP. Одинарний символ зворотної похилої риски нейтралізуватиме &. Якщо запис \fIстарий\fP є порожнім, для нього буде встановлено останній замінений запис \fIстарий\fP або, якщо попередніх замінників за журналом немає, останній \fIрядок\fP у пошуку \fB!?\fP\fIрядок\fP\fB[?]\fP. Якщо запис \fIновий\fP є порожнім, буде вилучено усі відповідні записи \fIстарий\fP. .TP \fB&\fP Повторити попередню підстановку. .TP \fBg\fP Спричиняє застосування змін до усього рядка події Використовують у поєднанні із .Q \fB:s\fP (приклад: .Q \fB:gs/\fIold\fP/\fInew\fP/\fR ) або .Q \fB:&\fP . Якщо використано з .Q \fB:s\fP , , можна скористатися будь\-яким роздільником замість /, а кінцевий роздільник є необов'язковим, якщо він є останнім символом рядка події. \fBa\fP можна скористатися як синонімом \fBg\fP. .TP \fBG\fP Застосувати наступний модифікатор .Q \fBs\fP або .Q \fB&\fP один раз до кожного слова у рядку подій. .PD .SH "ВБУДОВАНІ КОМАНДИ ОБОЛОНКИ" .\" start of bash_builtins .zZ .PP Якщо не зазначено інакше, кожна вбудована команда, яку документовано у цьому розділі як таку, що приймає параметри із початковим \fB\-\fP, приймає \fB\-\-\fP для позначення завершення параметрів. Вбудовані команди \fB:\fP, \fBtrue\fP, \fBfalse\fP і \fBtest\fP/\fB[\fP не приймають параметрів і не використовують \fB\-\-\fP в особливий спосіб. Вбудовані команди \fBexit\fP, \fBlogout\fP, \fBreturn\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP і \fBshift\fP приймають і обробляють аргументи, які починаються на \fB\-\fP, без потреби у кінцевому \fB\-\-\fP. Інші вбудовані команди, які приймають аргументи, але які не вказано як так, що приймають параметри, обробляють аргументи, що починаються з \fB\-\fP, як некоректні параметри, і потребують \fB\-\-\fP для запобігання такій обробці. .PP .PD 0 .TP \fB:\fP [\fIаргументи\fP] .PD Ні на що не впливає; команда нічого не робить, окрім розгортання \fIаргументів\fP і виконання будь\-яких вказаних переспрямувань. Стан повернення є нульовим. .TP \fB\&.\&\fP [\fB\-p\fP \fIшлях\fP] \fIназва_файла\fP [\fIаргументи\fP] .PD 0 .TP \fBsource\fP [\fB\-p\fP \fIшлях\fP] \fIназва_файла\fP [\fIаргументи\fP] .PD Команда \fB\&.\&\fP (\fBsource\fP) зчитує та виконує команди з файла \fIназва файла\fP у поточному середовищі оболонки та повертає стан завершення останньої команди, виконаної з файла \fIназва файла\fP. .IP Якщо \fIназва файла\fP не містить похилої риски, \fB\&.\&\fP шукатиме його. Якщо вказано параметр \fB\-p\fP, \fB\&.\&\fP обробляє \fIшлях\fP як список каталогів, розділених двокрапками, в яких слід знайти \fIназву файла\fP; інакше \fB\&.\&\fP використовує записи у .SM \fBPATH\fP, щоб знайти каталог, що містить \fIназва файла\fP. Файл \fIназва файла\fP не обов'язково має бути виконуваним файлом. Коли \fBbash\fP не перебуває у режимі posix, програма шукає у поточному каталозі, якщо файла \fIназва файла\fP не знайдено у .SM \fBPATH\fP, але не шукає в поточному каталозі, якщо вказано \fB\-p\fP. Якщо параметр \fBsourcepath\fP вбудованої команди \fBshopt\fP вимкнено, \fB\&.\&\fP не шукає у .SM \fBPATH\fP. .IP Якщо передано будь\-які \fIаргументи\fP, вони стають позиційними параметрами під час виконання файла \fIназва файла\fP. В іншому випадку позиційні параметри залишаються незмінними. .IP Якщо увімкнено параметр \fB\-T\fP, \fB.\fP успадковує будь\-які перехоплення для \fBDEBUG\fP; якщо ні, будь\-який рядок перехоплення \fBDEBUG\fP зберігається і відновлюється після виклику \fB.\fP, а \fB.\fP скидає перехоплення \fBDEBUG\fP під час його виконання. Якщо \fB\-T\fP не встановлено, а вихідний файл змінює перехоплення \fBDEBUG\fP, нове значення зберігається після завершення \&\fB.\fP. Повернене значення — це стан останньої команди, виконаної з файла \fIназва файла\fP (0, якщо команди не виконано), і ненульове, якщо файла \fIназва файла\fP не знайдено або його не вдасться прочитати. .TP \fBalias\fP [\fB\-p\fP] [\fIназва\fP[=\fIзначення\fP] .\|.\|.] Без аргументів або з параметром \fB\-p\fP \fBalias\fP виводить список альтернатив у формі \fBalias\fP \fIназва\fP=\fIзначення\fP до стандартного виведення. Якщо вказано аргументи, альтернативу буде визначено для кожної \fIназви\fP, для якої вказано \fIзначення\fP. Якщо у \fIзначенні\fP є кінцевий пробіл, наступне слово для перевірки на заміну альтернатив при розгортанні альтернативи під час обробки команди. Для кожної \fIназви\fP у списку аргументів, для якого не вказано \fIзначення\fP, буде виведено назву і значення \fIназви\fP альтернативи. \fBalias\fP повертає «істину», якщо вказано \fIназву\fP (без відповідного =\fIзначення\fP), для яких визначено альтернативи. .TP \fBbg\fP [\fIсппцифікація_завдання\fP .\|.\|.] Відновити усі призупинені завдання \fIспецифікація_завдання\fP у фоновому режимі, так, наче їх було запущено з \fB&\fP. Якщо \fIспецифікація_завдання\fP не вказано, буде використано дані оболонки щодо \fIпоточного завдання\fP. \fBbg\fP \fIспецифікація_завдання\fP повертає 0, якщо запущено керування завданнями, якщо запущено із керуванням завданнями, не буде виявлено якогось завдання із вказаною \fIспецифікацією_завдання\fP, і не буде виявлено завдання, яке запущено без керування завданнями. .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] [\fB\-lsvSVX\fP] .PD 0 .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] [\fB\-q\fP \fIфункція\fP] [\fB\-u\fP \fIфункція\fP] [\fB\-r\fP \fIпослідовність_клавіш\fP] .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] \fB\-f\fP \fIназва_файла\fP .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] \fB\-x\fP \fIпослідовність_клавіш\fP[:] \fIкоманда_оболонки\fP .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] \fIпослідовність_клавіш\fP:\fIназва_функції\fP .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] \fB\-p\fP|\fB\-P\fP [\fIкоманда_readline\fP] .TP \fBbind\fP [\fB\-m\fP \fIприв'язка_клавіш\fP] \fIпослідовність_клавіш\fP:\fIкоманда_readline\fP .TP \fBbind\fP \fIкомандний\-рядок\-readline\fP .PD Вивести поточні прив'язки клавіш до функцій у \fBreadline\fP, пов'язати послідовність клавіш із функцією, макросом \fBreadline\fP або команду оболонки або встановити значення змінної \fBreadline\fP. Кожне аргумент, який не є параметром, буде командою у форматі, який використовують у файлі ініціалізації \fBreadline\fP, зокрема \fI.inputrc\fP, але кожну прив'язку або прив'язку слід передавати як окремий аргумент. Приклад: \*'\*"\eC\-x\eC\-r\*": re\-read\-init\-file'. У наступному описі виведення, доступне для повторного зчитування, відформатовано як команди, які з'являтимуться у файлі ініціалізації \fBreadline\fP або які будуть надані як окремі аргументи команді \fBbind\fP. Параметри, якщо їх вказано, мають такі призначення: .RS .PD 0 .TP \fB\-m \fP\fIприв'язка_клавіш\fP Скористатися \fIприв'язкою_клавіш\fP як прив'язкою клавіш, яка буде чинною для внесення змін у формі наступних прив'язок. Прийнятними назвами \fIприв'язок_клавіш\fP є \fIemacs, emacs\-standard, emacs\-meta, emacs\-ctlx, vi, vi\-move, vi\-command\fP та \fIvi\-insert\fP. \fIvi\fP є еквівалентом \fIvi\-command\fP (\fIvi\-move\fP також є синонімом); \fIemacs\fP є еквівалентом \fIemacs\-standard\fP. .TP \fB\-l\fP Показати список всіх функцій \fBreadline\fP. .TP \fB\-p\fP Показувати назви функцій та прив'язки \fBreadline\fP таким чином, щоб їх можна було використовувати як аргумент наступної команди \fBbind\fP або у файлі ініціалізації \fBreadline\fP. Якщо після обробки параметрів лишаються якісь аргументи, \fBbind\fP обробляє їх як назви команд \fBreadline\fP і обмежує виведення цими назвами. .TP \fB\-P\fP Вивести список назв функцій та прив'язок \fBreadline\fP. Якщо після обробки параметрів лишаються якісь аргументи, \fBbind\fP обробляє їх як назви команд \fBreadline\fP і обмежує виведення цими назвами. .TP \fB\-s\fP Показати прив'язки послідовностей клавіш \fBreadline\fP до макросів та рядків, які вони виводять у такий спосіб, щоб їх можна було повторно використати як аргумент наступної команди \fBbind\fP або у файлі ініціалізації \fBreadline\fP. .TP \fB\-S\fP Показати прив'язки послідовностей клавіш \fBreadline\fP до макросів та рядків, які вони виводять. .TP \fB\-v\fP Показати змінну \fBreadline\fP та значення таким чином, щоб їх можна було використати як аргумент наступної команди \fBbind\fP або у файлі ініціалізації \fBreadline\fP. .TP \fB\-V\fP Показати список назв змінних \fBreadline\fP та їхніх значень. .TP \fB\-f \fP\fIназва_файла\fP Прочитати прив'язки клавіш з файла \fIназва_файла\fP. .TP \fB\-q \fP\fIфункція\fP Показати послідовності клавіш, які викликають вказану за назвою \fIфункцію\fP \fBreadline\fP. .TP \fB\-u \fP\fIфункція\fP Відв'язати всі клавіші, прив'язані до іменованої \fIфункції\fP \fBreadline\fP. .TP \fB\-r \fP\fIпосл_клавіш\fP Вилучити будь\-які поточні прив'язки для \fIkeyseq\fP. .TP \fB\-x \fP\fIпослідовність_клавіш\fP\fB[: ]\fP\fIкоманда_оболонки\fP Робить так, що при введенні послідовності клавіш \fIпосл_клавіш\fP буде виконано \fIкоманду\-оболонки\fP. Роздільником між \fIпосл_клавіш\fP та \fIкоманда\-оболонки\fP є або пробіл, або двокрапка (за бажанням), за якою йдуть пробіли. Якщо роздільником є ​​пробіли, \fIкоманщда\-оболонки\fP має бути взята в подвійні лапки, а \fBreadline\fP розгортає будь\-які зі своїх спеціальних зворотних похилих рисок у \fIкоманду\-оболонки\fP перед збереженням. Якщо роздільником є ​​двокрапка, будь\-які зовнішні подвійні лапки є необов'язковими, а \fBreadline\fP не розгортатиме рядок команди перед збереженням. Оскільки весь вираз прив'язки клавіш має бути одним аргументом, його слід взяти в одинарні лапки. При виконанні \fIкоманди\-оболонки\fP оболонка встановлює для змінної .SM \fBREADLINE_LINE\fP значення вмісту буфера рядків \fBreadline\fP, для змінних .SM \fBREADLINE_POINT\fP та .SM \fBREADLINE_MARK\fP значення поточного місця позиції вставлення та збереженої позиції вставлення (позначки), відповідно. Оболонка надає будь\-який визначений користувачем числовий аргумент змінній .SM \fBREADLINE_ARGUMENT\fP. Якщо аргументу немає, змінна лишається невстановленою. Якщо виконана команда змінює значення будь\-якої зі змінних .SM \fBREADLINE_LINE\fP, .SM \fBREADLINE_POINT\fP або .SM \fBREADLINE_MARK\fP, ці нові значення буде відтворено у стані редагування. .TP \fB\-X\fP Вивести усі послідовності клавіш, які пов'язано із командами оболонки, та пов'язані команди у форматі, яким можна скористатися як аргументом для наступної команди \fBbind\fP. .PD .PP Буде повернуто значення 0, якщо не використано нерозпізнаного параметра або не сталося помилки. .RE .TP \fBbreak\fP [\fIn\fP] Вийти з циклу \fBfor\fP, \fBwhile\fP, \fBuntil\fP або \fBselect\fP. Якщо вказано \fIn\fP, \fBbreak\fP перериває виконання \fIn\fP вкладених циклів. \fIn\fP має бути \(>= 1. Якщо \fIn\fP перевищує кількість вкладених циклів, буде здійснено вихід з усіх циклів. Повернутим значенням буде 0, якщо \fIn\fP є більшим або рівним 1. .TP \fBbuiltin\fP \fIвбудована\-команда\-оболонки\fP [\fIаргументи\fP] Виконати вказану вбудовану команду оболонки \fIshell\-builtin\fP, передавши їй \fIаргументи\fP, і повернути її стан виходу. Корисно при визначенні функції, чия назва є такою самою, як вбудована команда оболонки, зі збереженням функціональних можливостей вбудованої команди у самій функції. У такий спосіб типово перевизначають вбудовану команду \fBcd\fP. Повернутим станом є «хибність», якщо не існує команди \fIвбудована\-команда\-оболонки\fP. .TP \fBcaller\fP [\fIвираз\fP] Повертає контекст будь\-якого активного виклику підпрограми (функції оболонки або скрипту, яку виконано за допомогою вбудованих команд \fB.\fP або \fBsource\fP). .IP Без зазначення \fIвиразу\fP, \fBcaller\fP виводить номер рядка і назву файла початкового коду поточного виклику підпрограми. Якщо як \fIвираз\fP використано додатне ціле число, \fBcaller\fP виведе номер рядка, назву підпрограми та файл початкового коду, що відповідає відповідній позиції у поточному стосі викликів щодо виконання. Цими додатковими відомостями можна скористатися, наприклад, для виведення трасування стека. Поточний кадр є кадром із номером 0. .IP Повернутим значенням є 0, якщо оболонка виконує виклик підпрограми і \fIвираз\fP відповідає коректній позиції у стосі викликів. .TP .PD 0 \fBcd\fP [\fB\-L\fP] [\fB\-@\fP] [\fIкатало\fP] .TP \fBcd\fP \fB\-P\fP [\fB\-e\fP] [\fB\-@\fP] [\fIкаталог\fP] .PD Змінити поточний каталог на \fIкаталог\fP. Якщо \fIкаталог\fP не вказано, як \fIкаталог\fP буде використано значення змінної оболонки .SM \fBHOME\fP. Якщо існує змінна .SM \fBCDPATH\fP, і \fIdir\fP не починається з похилої риски (/), \fBcd\fP використовує її як шлях пошуку: оболонка шукає \fIкаталог\fP у кожній назві каталогу з .SM \fBCDPATH\fP. Альтернативні назви каталогів у .SM \fBCDPATH\fP розділяють двокрапкою (:). Порожня назва каталогу у .SM \fBCDPATH\fP еквівалентна поточному каталогу, тобто .Q .\& . .IP The \fB\-P\fP option causes \fBcd\fP to use the physical directory structure by resolving symbolic links while traversing \fIdir\fP and before processing instances of .FN .\|.\& in \fIdir\fP (see also the \fB\-P\fP option to the \fBset\fP builtin command). .IP The \fB\-L\fP option forces \fBcd\fP to follow symbolic links by resolving the link after processing instances of .FN .\|.\& in \fIdir\fP. If .FN .\|.\& appears in \fIdir\fP, \fBcd\fP processes it by removing the immediately previous pathname component from \fIdir\fP, back to a slash or the beginning of \fIdir\fP, and verifying that the portion of \fIdir\fP it has processed to that point is still a valid directory name after removing the pathname component. If it is not a valid directory name, \fBcd\fP returns a non\-zero status. If neither \fB\-L\fP nor \fB\-P\fP is supplied, \fBcd\fP behaves as if \fB\-L\fP had been supplied. .IP Якщо параметр \fB\-e\fP вказано разом з \fB\-P\fP, і \fBcd\fP не може успішно визначити поточний робочий каталог після успішної зміни каталогу, оболонка повертає ненульовий статус. .IP У системах, у яких передбачено підтримку цією функції, параметр \fB\-@\fP представляє розширені атрибути, пов'язані з файлом, як каталогом. .IP Аргумент \fB\-\fP перетворюється на .SM \fB$OLDPWD\fP перед спробою зміни каталогу. .IP Якщо \fBcd\fP використовує непорожню назву каталогу з .SM \fBCDPATH\fP, або якщо \fB\-\fP є першим аргументом, і зміна каталогу успішна, \fBcd\fP записує абсолютний шлях до нового робочого каталогу до стандартного виведення. .IP Якщо каталог буде успішно змінено, \fBcd\fP встановлює для змінної середовища \fBPWD\fP значення назви нового каталогу, а для змінної середовища \fBOLDPWD\fP буде встановлено значення поточного робочого каталогу до зміни. .IP Повернене значення дорівнює true, якщо каталог було успішно змінено; false в іншому випадку. .TP \fBcommand\fP [\fB\-pVv\fP] \fIкоманда\fP [\fIаргумент\fP .\|.\|.] Вбудована команда \fBcommand\fP виконує \fIкоманду\fP з \fIаргументами\fP, придушуючи звичайний пошук \fIкоманди\fP у функціях оболонки. Виконуються лише вбудовані команди або команди, знайдені у .SM \fBPATH\fP з назвою \fIкоманда\fP. Якщо вказано параметр \fB\-p\fP, пошук \fIкоманди\fP буде виконано з використанням типового значення для .SM \fBPATH\fP, що гарантує знаходження усіх стандартних допоміжних програм. .IP Якщо вказано параметр \fB\-V\fP або \fB\-v\fP, \fBcommand\fP виводить опис \fIкоманди\fP. Параметр \fB\-v\fP показує одне слово, що вказує на команду або назву файла, що використовується для виклику \fIкоманди\fP; параметр \fB\-V\fP надає змогу отримати докладніший опис. .IP Якщо вказано параметр \fB\-V\fP або \fB\-v\fP, стан виходу дорівнюватиме нулю, якщо \fIкоманду\fP знайдено, і не дорівнюватиме нулю, якщо ні. Якщо жоден з параметрів не вказано і сталася помилка або \fIкоманду\fP не знайдена, стан виходу дорівнюватиме 127. В іншому випадку стан виходу вбудованої функції \fBкоманда\fP дорівнює стану виходу \fIкоманди\fP. .TP \fBcompgen\fP [\fB\-V\fP \fIназва_змінної\fP] [\fIпараметр\fP] [\fIслово\fP] Створити можливі доповнення\-відповідники для \fIслова\fP, відповідно до \fIпараметрів\fP. Параметрами можуть бути будь\-які параметри, які приймає вбудована команда \fBcomplete\fP за винятком \fB\-p\fP, \fB\-r\fP, \fB\-D\fP, \fB\-E\fP і \fB\-I\fP. Відповідники буде записано до стандартного виведення. .IP Якщо вказано параметр \fB\-V\fP, \fBcompgen\fP зберігає створені автодоповнення у змінній — індексованому масиві \fIназва_змінної\fP замість того, щоб записувати їх до стандартного виведення. .IP При використанні параметрів \fB\-F\fP і \fB\-C\fP різноманітні змінні оболонки, встановлені можливостями з програмованого доповнення, хоча і будуть доступними, не матимуть придатних до використання значень. .IP Відповідники буде створено у той самий спосіб, наче їх було безпосередньо створено на основі специфікації доповнення із тими самими прапорцями кодом програмованого доповнення. Якщо вказано \fIслово\fP, буде виведено або збережено лише ті доповнення, які є відповідними \fIслову\fP. .IP Повернутим значенням буде true, якщо не вказано некоректного параметра або не було створено жодної відповідності. .TP \fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIпраметр\-доповнення\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIдія\fP] .br [\fB\-G\fP \fIвзірець\fP] [\fB\-W\fP \fIсписок слів\fP] [\fB\-F\fP \fIфункція\fP] [\fB\-C\fP \fIкоманда\fP] .br [\fB\-X\fP \fIвзірець_фільтрування\fP] [\fB\-P\fP \fIпрефікс\fP] [\fB\-S\fP \fIсуфікс\fP] \fIназва\fP [\fIназва\fP .\|.\|.] .PD 0 .TP \fBcomplete\fP \fB\-pr\fP [\fB\-DEI\fP] [\fIназва\fP .\|.\|.] .PD Вказати, як має бути доповнено аргументи кожної із \fIназв\fP. .IP Якщо вказано параметр \fB\-p\fP або не вказано жодних параметрів, буде виведено наявні специфікації у спосіб, який надає змогу повторно використати їх як вхідні дані. Використання параметра \fB\-r\fP призведе до вилучення специфікації доповнення для кожної з \fIназв\fP або, якщо не вказано жодної \fIназви\fP, усіх специфікацій доповнення. .IP Використання параметра \fB\-D\fP вказує на тек, що інші вказані параметри і дії слід застосувати до «типового» ( .Q default ) доповнення команд; тобто доповнення, яке використовуватиметься для команд, для яких раніше не було визначено доповнення. Використання параметра \fB\-E\fP вказує на те, що інші вказані параметри та дії слід застосувати до «порожнього» ( .Q empty ) доповнення команд; тобто доповнення, яке використовують для порожнього рядка. Параметр \fB\-I\fP вказує на те, що інші вказані параметри і дії слід застосувати до доповнення початкового слова, яке не є встановленням значення, у рядку або після роздільника команд, зокрема \fB;\fP або \fB|\fP, тобто, зазвичай, доповнення назви команди. Якщо вказано декілька параметрів, \fB\-D\fP має вищий пріоритет за \fB\-E\fP, а обидва ці параметри мають вищий пріоритет за \fB\-I\fP. Якщо вказано будь\-який з параметрів \fB\-D\fP, \fB\-E\fP або \fB\-I\fP, усі інші аргументи \fIназва\fP буде проігноровано; ці доповнення застосовуватимуться лише до випадку, який вказано параметром. .IP Процедуру застосування цих специфікацій доповнення при спробі доповнення слів описано вище у розділі .ie \n(zZ=1 in \fIbash\fP(1). .el above under \fBProgrammable Completion\fP. .IP Інші параметри, якщо їх вказано, мають описані нижче призначення. Аргументи до параметрів \fB\-G\fP, \fB\-W\fP і \fB\-X\fP (і, якщо потрібно, параметрів \fB\-P\fP і \fB\-S\fP) слід брати у лапки, щоб захистити їх від розгортання до виклику вбудованої команди \fBcomplete\fP. .IP .RS .PD 0 .TP 8 \fB\-o\fP \fIпараметр\-доповнення\fP \fIпараметр\-доповнення\fP контролює декілька аспектів поведінки compspec поза простою генерацією доповнень. \fIпараметр\-доповнення\fP може бути одним з: .RS .TP 8 \fBbashdefault\fP Виконати решту типових доповнень \fBbash\fP, якщо compspec не генерує жодних відповідників. .TP 8 \fBdefault\fP Використати типове доповнення назви файлу з \fBreadline\fP, якщо compspec не генерує жодних відповідників. .TP 8 \fBdirnames\fP Виконати доповнення назви каталогу, якщо compspec не генерує жодних відповідників. .TP 8 \fBfilenames\fP Повідомити \fBreadline\fP, що назви файлів створює compspec, щоб уможливити будь\-яку обробку, яка є специфічною до назв файлів (зокрема додавання символу похилої риски до назв каталогів, нейтралізацію спеціальних символів або придушення кінцевих пробілів). Призначено для використання у функціях оболонки. .TP 8 \fBfullquote\fP Повідомити \fBreadline\fP, що слід нейтралізувати усі доповнені слова, навіть якщо вони не є назвами файлів. .TP 8 \fBnoquote\fP Повідомити \fBreadline\fP, що не слід брати у лапки завершені слова, якщо вони є назвами файлів (типово, назви файлів беруть у лапки). .TP 8 \fBnosort\fP Повідомити \fBreadline\fP, що не слід упорядковувати список можливих завершень за абеткою. .TP 8 \fBnospace\fP Повідомити \fBreadline\fP, що не слід дописувати пробіл (типова поведінка) до слів, які завершуються на кінці рядка. .TP 8 \fBplusdirs\fP Після створення усіх відповідників, які визначено compspec, буде виконано спробу доповнення назви каталогу. Усі знайдені відповідники буде додано до результатів інших дій. .RE .TP 8 \fB\-A\fP \fIдія\fP Для створення списку можливих завершень може бути використано одну з таких \fIдій\fP: .RS .TP 8 \fBalias\fP Альтернативні назви. Також можна вказати як \fB\-a\fP. .TP 8 \fBarrayvar\fP Назви змінних\-масивів. .TP 8 \fBbinding\fP Назви прив'язки клавіш у \fBreadline\fP. .TP 8 \fBbuiltin\fP Назви вбудованих команд оболонки. Також можна вказати як \fB\-b\fP. .TP 8 \fBкоманда\fP Назви команд. Також можна вказати як \fB\-c\fP. .TP 8 \fBdirectory\fP Назви каталогів. Також можна вказати як \fB\-d\fP. .TP 8 \fBdisabled\fP Назви вимкнених вбудованих команд оболонки. .TP 8 \fBenabled\fP Назви увімкнених вбудованих команд оболонки. .TP 8 \fBexport\fP Назви експортованих змінних оболонки. Можна також вказати як \fB\-e\fP. .TP 8 \fBфайл\fP Назви файлів і каталогів, подібно до доповнення назв файлів у \fBreadline\fP. Можна також вказати як \fB\-f\fP. .TP 8 \fBfunction\fP Назви функцій оболонки. .TP 8 \fBgroup\fP Назви груп. Також можна вказати як \fB\-g\fP. .TP 8 \fBhelptopic\fP Теми довідки, які приймає вбудована команда \fBhelp\fP. .TP 8 \fBhostname\fP Назви вузлів, як їх вказано у файлі, на який вказує змінна оболонки .SM \fBHOSTFILE\fP. .TP 8 \fBjob\fP Назви завдань, якщо активним є керування завданнями. Також можна вказати як \fB\-j\fP. .TP 8 \fBkeyword\fP Зарезервовані слова оболонки. Також можна вказати як \fB\-k\fP. .TP 8 \fBrunning\fP Назви запущених завдань, якщо активним є керування завданнями. .TP 8 \fBservice\fP Назви служб. Також можна вказати як \fB\-s\fP. .TP 8 \fBsetopt\fP Коректні аргументи до параметра \fB\-o\fP вбудованої команди \fBset\fP. .TP 8 \fBshopt\fP Назви параметрів оболонки, які приймаються вбудованою командою \fBshopt\fP. .TP 8 \fBsignal\fP Назви сигналів. .TP 8 \fBstopped\fP Назви зупинених завдань, якщо активним є керування завданнями. .TP 8 \fBuser\fP Імена користувачів. Також можна вказати як \fB\-u\fP. .TP 8 \fBvariable\fP Назви усіх змінних оболонки. Можна також вказати як \fB\-v\fP. .RE .TP 8 \fB\-C\fP \fIкоманда\fP \fIКоманду\fP буде виконано у середовищі підоболонки, а її виведені дані буде використано як можливі варіанти завершення. Аргументи передають так само, як і для параметра \fB\-F\fP. .TP 8 \fB\-F\fP \fIфункція\fP Функцію оболонки \fIфункція\fP буде виконано у поточному середовищі оболонки. При виконанні функції першим аргументом (\fB$1\fP) буде назва команди, чиї аргументи слід доповнити, другим аргументом (\fB$2\fP) буде слово, яке слід доповнити, а третім аргументом (\fB$3\fP) буде слово, яке передує слову, яке слід доповнити, у поточному рядку команди. По завершенню обробки \fIфункції\fP програмоване доповнення отримає можливі доповнення зі значення змінної\-масиву .SM \fBCOMPREPLY\fP. .TP 8 \fB\-G\fP \fIзаг_взірець\fP Для створення варіантів можливих завершень буде розгорнуто взірець шляхів \fIзаг_взірець\fP. .TP 8 \fB\-P\fP \fIпрефікс\fP На початку усіх можливих завершень після застосування усіх інших параметрів буде дописано \fIпрефікс\fP. .TP 8 \fB\-S\fP \fIсуфікс\fP Наприкінці усіх можливих завершень після застосування усіх інших параметрів буде дописано \fIсуфікс\fP. .TP 8 \fB\-W\fP \fIсписок_слів\fP Поділити \fIсписок слів\fP з використанням символів у спеціальній змінній .SM \fBIFS\fP як роздільників, і розгорнути кожне отримане слово. У \fIсписку_слів\fP буде використано нейтралізацію оболонки для забезпечення роботи механізму обробки слів, які містять метасимволи або символи оболонки, у значенні .SM \fBIFS\fP. Можливими доповненнями є елементи списку\-результату, який відповідає префіксу слова, пошук доповнення якого шукає оболонка. .TP 8 \fB\-X\fP \fIвзірець_фільтрування\fP \fIвзірець_фільтрування\fP — взірець у форматі, який використовують для розгортання шляхів. Його буде застосовано до списку можливих доповнень, який створено попередніми параметрами та аргументами, а усі доповнення, які відповідають \fIвзірцю_фільтрування\fP буде вилучено зі списку. Використання початкового \fB!\fP у \fIвзірці_фільтрування\fP призведе до обертання взірця. Таким чином, буде вилучено лише ті доповнення, які не збігаються із \fIвзірцем_фільтрування\fP. .PD .PP Повернутим значенням буде «істина», якщо не буде вказано некоректного параметра, не буде вказано параметра, відмінного від \fB\-p\fP, \fB\-r\fP, \fB\-D\fP, \fB\-E\fP або \fB\-I\fP, без аргументу \fIназва\fP, не буде спроби вилучити специфікацію доповнення для \fIназви\fP, для якої не існує специфікації, або не станеться помилка під час додавання специфікації доповнення. .RE .TP \fBcompopt\fP [\fB\-o\fP \fIпараметр\fP] [\fB\-DEI\fP] [\fB+o\fP \fIпараметр\fP] [\fIназва\fP] Змінити параметри автодоповнення для кожної \fIназви\fP відповідно до \fIпараметра\fP або для автодоповнення, що виконується у поточний момент, якщо \fIназва\fP не вказано. Якщо \fIпараметр\fP не вказано, буде показано параметри автодоповнення для кожної \fIназви\fP або поточного автодоповнення. Можливі значення \fIпараметра\fP — це ті, які є дійсними для вбудованої функції \fBcomplete\fP, описаної вище. .IP Використання параметра \fB\-D\fP вказує на тек, що інші вказані параметри слід застосувати до .Q default доповнення команд; параметр \fB\-E\fP вказує на те, що інші надані параметри має бути застосовано для .Q empty доповнення команд; а параметр \fB\-I\fP вказує на те, що інші надані параметри має бути застосовано для доповнення початкового слова у рядку. Їх визначають у той самий спосіб, що і для вбудованої команди \fBcomplete\fP. .IP Якщо вказано кілька параметрів, параметр \fB\-D\fP має пріоритет над \fB\-E\fP, і обидва параметри мають пріоритет над \fB\-I\fP. .IP Повернутим значенням буде «істина», якщо не буде вказано некоректного параметра, не буде спроби змінити параметри для \fIназви\fP, для якої не існує специфікації доповнення, або не станеться помилки виведення. .TP \fBcontinue\fP [\fIn\fP] \fBcontinue\fP відновлює наступну ітерацію зовнішнього циклу \fBfor\fP, \fBwhile\fP, \fBuntil\fP або \fBselect\fP. Якщо вказано \fIn\fP, \fBbash\fP відновлює виконання на \fIn\fP\-му зовнішньому циклі. \fIn\fP має бути \(>= 1. Якщо \fIn\fP є більшим за кількість зовнішніх циклів, оболонка відновлює ітерацію на останньому зовнішньому циклі (циклі .Q top-level ). Буде повернуто значення 0, якщо \fIn\fP не є більшим або рівним за 1. .TP \fBdeclare\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIназва\fP[=\fIзначення\fP] .\|.\|.] .PD 0 .TP \fBtypeset\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIназва\fP[=\fIзначення\fP] .\|.\|.] .PD Оголосити змінні та/або надати їм атрибути. Якщо не вказано \fIназви\fP, тоді буде виведено значення змінних або функцій. Параметр \fB\-p\fP призведе до виведення атрибутів та значень кожної \fIназви\fP. Коли \fB\-p\fP буде використано з аргументами \fIназва\fP, додаткові параметри, окрім \fB\-f\fP та \fB\-F\fP, буде проігноровано. .IP Якщо \fB\-p\fP буде використано без аргументів \fIназва\fP, \fBdeclare\fP виведе атрибути та значення всіх змінних, що мають атрибути, визначені додатковими параметрами. Якщо з \fB\-p\fP не використано інших параметрів, \fBdeclare\fP виведе атрибути та значення всіх змінних оболонки. Параметр \fB\-f\fP обмежує виведені дані функціями оболонки. .IP Параметр \fB\-F\fP забороняє виведення визначень функцій; буде виведено лише назву функції та її атрибути. Якщо увімкнено параметр оболонки \fBextdebug\fP за допомогою \fBshopt\fP, також буде виведено назву вихідного файла та номер рядка, де визначено кожен із записів \fIназва\fP. Використання параметра \fB\-F\fP автоматично вмикає \fB\-f\fP. .IP Параметр \fB\-g\fP примусово створює або змінює змінні у загальній області видимості, навіть коли \fBdeclare\fP виконується у функції оболонки. Його буде проігноровано, якщо \fBdeclare\fP не виконується у функції оболонки. .IP Використання параметра \fB\-I\fP призводить до того, що локальні змінні успадковують атрибути (за винятком атрибута \fInameref\fP) та значення будь\-якої наявної змінної з тією самою \fIназвою\fP у навколишній області видимості. Якщо наявної змінної немає, значення локальної змінної вважається спочатку не встановленим. .IP Наступними параметрами можна скористатися для обмеження виведення змінними із зазначеним атрибутом або для надання змінним атрибутів: .RS .PD 0 .TP \fB\-a\fP Кожна \fIназва\fP є індексованою змінною\-масивом (див. \fBМасиви\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP \fB\-A\fP Кожна \fIназва\fP є асоціативною змінною\-масивом (див. \fBМасиви\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP \fB\-f\fP Кожна \fIназва\fP є функцією оболонки. .TP \fB\-i\fP Змінну буде оброблено як ціле число; арифметичні обчислення (див. .SM \fBАРИФМЕТИЧНІ ОБЧИСЛЕННЯ\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) буде виконано під час встановлення значення для змінної. .TP \fB\-l\fP При встановленні значення змінної усі літери верхнього регістру (великі) буде перетворено на літери нижнього регістру (малі). Атрибут верхнього регістру буде вимкнено. .TP \fB\-n\fP Надати кожній \fIназві\fP атрибут \fInameref\fP, зробивши її іменованим посиланням на іншу змінну. Ця інша змінна визначається значенням \fIназви\fP. Усі посилання, встановлення значень та внесення змін до атрибутів \fIназви\fP, окрім тих, у яких використано або змінено сам атрибут \fB\-n\fP, буде виконано над змінною, на яку посилається значення \fIназви\fP. Атрибут nameref не можна застосовувати до змінних\-масивів. .TP \fB\-r\fP Зробити \fIназви\fP придатними лише для читання. Цим назвам потім не можна буде надати значення за допомогою інструкцій встановлення значень або скасувати встановлення значення. .TP \fB\-t\fP Надати усім записам \fIназва\fP атрибут \fIтрасування\fP. Трасовані функції успадковують пастки \fBDEBUG\fP і \fBRETURN\fP від оболонки, звідки їх викликано. Атрибут трасування не має особливого значення для змінних. .TP \fB\-u\fP При встановленні значення змінної усі літери нижнього регістру (малі) буде перетворено на літери верхнього регістру (великі). Атрибут нижнього регістру буде вимкнено. .TP \fB\-x\fP Позначити будь\-які \fIназви\fP для експортування до наступних команд за допомогою середовища. .PD .PP Використання .Q + замість .Q \- Якщо скористатися «+» замість «\-», атрибут буде вимкнено, за тим винятком, що \fB+a\fP і \fB+A\fP не можна використовувати для знищення змінних\-масивів і \fB+r\fP не вилучатиме атрибут «лише читання». .PP Якщо їх використано у функції, команди \fBdeclare\fP і \fBtypeset\fP роблять усі записи \fIназва\fP локальними, подібно до застосування команди \fBlocal\fP, якщо не вказано параметра \fB\-g\fP. Якщо після назви змінної вказано =\fIзначення\fP, для змінної буде встановлено значення \fIзначення\fP. Якщо використано \fB\-a\fP або \fB\-A\fP і синтаксис складеного встановлення значень для створення змінних\-масивів, додаткові атрибути не працюватимуть, ж до наступних встановлень значень. .PP Повернуте значення дорівнюватиме 0, аж доки не буде знайдено некоректний параметр, буде зроблено спробу визначити функцію за допомогою .Q "\-f foo=bar" , буде зроблено спробу встановити значення для призначеної лише для читання змінної, буде зроблено спробу встановити значення змінної\-масиву без використання синтаксису складеного встановлення значення (див. \fBМасиви\fP .ie \n(zZ=1 in \fIbash\fP(1)), .el above), , одна із \fIназв\fP не є назвою змінної оболонки, буде зроблено спробу вимкнути стан «лише для читання» для призначеної лише для читання змінної, буде зроблено спробу вимкнути стан масиву для змінної\-масиву або буде зроблено спробу показати функції, якої не існує, за допомогою \fB\-f\fP. .RE .TP \fBdirs [\-clpv] [+\fP\fIn\fP\fB] [\-\fP\fIn\fP\fB]\fP Без параметрів виводить список каталогів, які зараз запам’ятовуються. Типово назви каталогів виводяться в одному рядку, розділені пропусками. Каталоги додаються до списку за допомогою команди \fBpushd\fP; команда \fBpopd\fP вилучає записи зі списку. Першим у стеку завжди є поточний каталог. .IP Параметри, якщо їх надано, мають таке значення: .RS .PD 0 .TP \fB\-c\fP Очищує стос каталогів вилученням усіх записів. .TP \fB\-l\fP Створює список із використанням повних шляхів; у типовому форматі списку використовують тильду для позначення домашнього каталогу. .TP \fB\-p\fP Вивести стос каталогів із одним записом на кожен рядок. .TP \fB\-v\fP Вивести стос каталогів із одним записом на кожен рядок із додаванням до кожного запису його індексу у стосі. .TP \fB+\fP\fIn\fP Показує \fIn\fP\-ий запис, рахуючи зліва списку, показаного \fBdirs\fP при виклику без параметрів; відлік починається з нуля. .TP \fB\-\fP\fIn\fP Показує \fIn\fP\-ий запис, рахуючи справа списку, показаного \fBdirs\fP при виклику без параметрів; відлік починається з нуля. .PD .PP Повертається значення 0, крім випадків, коли вказано недійсний параметр або індекси \fIn\fP виходять за кінець стеку каталогів. .RE .TP \fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIідентифікатор\fP .\|.\|.] Без параметрів вилучає усі \fIідентифікатори\fP з таблиці активних завдань. Кожен \fIідентифікатор\fP може бути \fIспецифікацією завдання\fP або \fIідентифікатором процесу\fP; якщо \fIідентифікатор\fP збігається з \fIідентифікатором процесу\fP, \fBdisown\fP використовує завдання, що містить \fIідентифікатор процесу\fP, як \fIспецифікацію завдання\fP. .IP Якщо вказано параметр \fB\-h\fP, \fBdisown\fP не вилучає завдання, що відповідають кожному \fIідентифікатору\fP, з таблиці завдань, а позначає їх, щоб оболонка не надсилала .SM \fBSIGHUP\fP до завдання, якщо оболонка отримує .SM \fBSIGHUP\fP. .IP Якщо не вказано \fIідентифікатор\fP, параметр \fB\-a\fP означає вилучення або позначення усіх завдань; параметр \fB\-r\fP без аргументу \fIідентифікатор\fP вилучає або позначає запущені завдання. Якщо \fIідентифікатор\fP не вказано, і не вказано ні параметр \fB\-a\fP, ні параметр \fB\-r\fP, \fBdisown\fP вилучає або позначає поточне завдання. .IP Буде повернуто значення 0, якщо \fIідентифікатор\fP не визначає коректного завдання. .TP \fBecho\fP [\fB\-neE\fP] [\fIаргумент\fP .\|.\|.] Вивести відокремлені пробілами \fIаргументи\fP, завершивши виведення символом нового рядка. Повернутим станом буде 0, якщо не станеться помилки запису. Якщо вказано \fB\-n\fP, кінцевий символ нового рядка виведено не буде. .IP Якщо вказано \fB\-n\fP, кінцевий символ нового рядка буде придушено \fBecho\fP. Якщо вказано параметр \fB\-e\fP, буде увімкнено обробку вказаних нижче екранованих символом зворотної похилої риски символів. Параметр \fB\-E\fP вимикає обробку цих екранованих символів, навіть у системах, де їх типово буде оброблено. Параметром оболонки \fBxpg_echo\fP можна скористатися для визначення того, чи \fBecho\fP оброблятиме усі параметри і розгортатиме ці екрановані символи. \fBecho\fP не оброблятиме \fB\-\-\fP, як кінець параметрів. .IP \fBecho\fP обробляє такі керівні послідовності: .RS .PD 0 .TP \fB\ea\fP гудок (дзвінок) .TP \fB\eb\fP backspace .TP \fB\ec\fP приховати подальший вивід .TP \fB\ee\fP .TP \fB\eE\fP символ скасування .TP \fB\ef\fP подавання бланку .TP \fB\en\fP новий рядок .TP \fB\er\fP повернення каретки .TP \fB\et\fP горизонтальна табуляція .TP \fB\ev\fP вертикальна табуляція .TP \fB\e\e\fP зворотна похила .TP \fB\e0\fP\fInnn\fP Восьмибітовий символ, значенням якого є вісімкове \fInnn\fP (від нуля до трьох вісімкових цифр). .TP \fB\ex\fP\fIHH\fP Восьмибітовий символ, значенням якого є шістнадцяткове значення \fIHH\fP (від однієї до двох шістнадцяткових цифр). .TP \fB\eu\fP\fIHHHH\fP Символ Unicode (ISO/IEC 10646), чиїм значенням є шістнадцяткове значення \fIHHHH\fP (від однієї до чотирьох шістнадцяткових цифр). .TP \fB\eU\fP\fIHHHHHHHH\fP Символ Unicode (ISO/IEC 10646), чиїм значенням є шістнадцяткове значення \fIHHHHHHHH\fP (від однієї до восьми шістнадцяткових цифр). .PD .PP \fBecho\fP записує усі невідомі програмі символи з екрануванням зворотної похилою рискою без змін. .RE .TP \fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fIназва_файла\fP] [\fIназва\fP .\|.\|.] Увімкнути або вимкнути вбудовані команди оболонки. Вимикання вбудованої команди уможливлює використання виконуваного файла, який має таку саму назву, що і вбудована команда оболонки, який слід виконати без визначення повного шляху до файла, хоча, зазвичай, оболонка шукає вбудовані команди, перш ніж виконувати файли. .IP Якщо використано \fB\-n\fP, буде вимкнено усі команди, які визначаються аргументом \fIназва\fP; якщо ж цей параметр не вказано, \fIназви\fP буде увімкнено. Наприклад, щоб скористатися виконуваним файлом \fBtest\fP, який зберігається в одному з каталогів, описаних змінною .SM \fBPATH\fP, а не відповідною вбудованою командою оболонки, слід віддати команду .QN "enable \-n test" . .IP Якщо не надано аргументів \fIназва\fP або якщо вказано параметр \fB\-p\fP, буде виведено список вбудованих функцій оболонки. Якщо не буде вказано інших аргументів параметра, список міститиме усі увімкнені вбудовані функції оболонки. Якщо вказано \fB\-n\fP, буде виведено лише вимкнені вбудовані функції. Якщо вказано \fB\-a\fP, виведений список міститиме усі вбудовані функції, із зазначенням того, чи увімкнено кожну з них. Параметр \fB\-s\fP означає обмеження виведених даних лише \fIспеціальними\fP вбудованими функціями .SM POSIX . .IP Параметр \fB\-f\fP означає завантаження нової вбудованої команди \fIназва\fP зі спільного об'єкта \fIназва файла\fP на системах, де передбачено підтримку динамічного завантаження. Якщо \fIназва файла\fP не містить символу похилої риски, \fBbash\fP використовуватиме значення змінної \fBBASH_LOADABLES_PATH\fP як список каталогів, розділених двокрапками, в яких слід шукати файл \fIназва файла\fP. Типове значення для \fBBASH_LOADABLES_PATH\fP залежить від системи і може включати .Q .\& для примусового обмеження пошуку поточним каталогом. Параметр \fB\-d\fP вилучить вбудовану команду, яку було раніше завантажено за допомогою \fB\-f\fP. Якщо \fI\-s\fP використано з \fI\-f\fP, нова вбудована команда стане спеціальною вбудованою командою .SM POSIX . .IP Якщо не вказано жодних параметрів, а \fIназва\fP не є вбудованою командою оболонки, \fBenable\fP спробує завантажити команду \fIназва\fP зі спільного об'єкта із назвою \fIназва\fP, ніби командою була .QN "enable \-f \fIname name\fP" . .IP Повернутим значенням є 0, якщо \fIназва\fP не є вбудованою командою оболонки або не станеться помилка під час завантаження нової вбудованої команди з об'єкта спільного використання. .TP \fBeval\fP [\fIаргумент\fP .\|.\|.] Об'єднує \fIаргументи\fP в одну команду, розділяючи їх пробілами. Потім \fBbash\fP зчитує та виконує цю команду, і повертає її стан завершення як статус повернення \fBeval\fP. Якщо \fIаргументів\fP немає або є лише порожні аргументи, \fBeval\fP повертає 0. .TP \fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fIназва\fP] [\fIкоманда\fP [\fIаргументи\fP]] Якщо вказано аргумент \fIкоманда\fP, ця команда замінить оболонку без створення нового процесу. Значенням \fIкоманди\fP не може бути вбудована команда або функція оболонки. \fIАргументи\fP стануть аргументами \fIкоманди\fP. Якщо вказано параметр \fB\-l\fP, оболонка додасть дефіс на початку нульового аргументу, переданого \fIкоманді\fP. Це те, що робить \fIlogin\fP(1). Використання параметра \fB\-c\fP призводить до того, що \fIкоманду\fP буде виконано із порожнім середовищем. Якщо вказано параметр \fB\-a\fP, оболонка передасть \fIназву\fP як нульовий аргумент виконаної команди. .IP Якщо \fIкоманду\fP не може бути виконано з певної причини, неінтерактивна оболонка завершить роботу, якщо не буде увімкнено параметра оболонки \fBexecfail\fP. Якщо параметр оболонки буде увімкнено, буде повернуто повідомлення про помилку. Інтерактивна оболонка поверне повідомлення про помилку, якщо файл неможливо виконати. Підоболонка безумовно завершить роботу, якщо спроба виконати \fBexec\fP буде невдалою. .IP Якщо \fIкоманду\fP не буде вказано, буде виконано усі переспрямування у поточній оболонці і повернуто стан 0. Якщо станеться помилка переспрямування, буде повернуто стан 1. .TP \fBexit\fP [\fIn\fP] Наказує оболонці завершити роботу із станом \fIn\fP. Якщо \fIn\fP не вказано, стан виходу визначатиметься станом виходу останньої виконаної команди. До завершення роботи оболонки буде виконано будь\-яку пастку .SM \fBEXIT\fP. .TP \fBexport\fP [\fB\-fn\fP\^] [\fIназва\fP[=\fIзначення\fP]] .\|.\|. .PD 0 .TP \fBexport \-p [\-f\^]\fP .PD Надані \fIназви\fP буде позначено для автоматичного експортування у середовище наступних виконуваних команд. Якщо вказано параметр \fB\-f\fP, \fIназви\fP посилаються на функції. .IP Параметр \fB\-n\fP скасовує експортування, або вилучає атрибут експортування, з кожного запису \fIназва\fP. Якщо \fIназви\fP не вказано або якщо вказано лише параметр \fB\-p\fP, \fBexport\fP показує список назв усіх експортованих змінних на стандартному виведенні. Використання \fB\-p\fP та \fB\-f\fP призводить до показу експортованих функцій. Параметр \fB\-p\fP показує виведення у формі, яку можна повторно використовувати як вхідні дані. .IP \fBexport\fP надає змогу встановлювати значення змінної під час її експортування або скасування експортування шляхом додавання після назви змінної =\fIзначення\fP. Для значення змінної буде встановлено \fIзначення\fP з паралельною зміною атрибута експортування. \fBexport\fP повертає код виходу 0, якщо не виявлено недійсного параметра, одна з \fIназв\fP не є дійсною назвою змінної оболонки, або \fB\-f\fP вказано з аргументом \fIназва\fP, яке не є функцією. .TP \fBfalse\fP Нічого не робити; повертає ненульовий стан. .TP \fBfc\fP [\fB\-e\fP \fIназва_редактора\fP] [\fB\-lnr\fP] [\fIперший\fP] [\fIостанній\fP] .PD 0 .TP \fBfc\fP \fB\-s\fP [\fIвзірець\fP=\fIзамінник\fP] [\fIкоманда\fP] .PD Перша форма визначає діапазон команд у рядках від \fIперший\fP до \fIостанній\fP у списку журналу і виводить їх для повторного виконання або редагування і повторного виконання. Значення \fIперший\fP і \fIостанній\fP можна вказати як рядок (для виявлення останньої команди, яка починалася із вказаного рядка) або як номер (індекс у списку журналу, де від'ємні значення використовують як відступ від номера поточної команди). .IP У списку значення \fIпершого\fP або \fIостаннього\fP рівні 0 є еквівалентом \-1, \-0 є еквівалентом визначення поточної команди (зазвичай, команди \fBfc\fP). В інших випадках, 0 є еквівалентом \-1, а \-0 є некоректним значенням. Якщо \fIостанній\fP не вказано, для нього буде встановлено значення поточної команди у списку (отже, .QN "fc \-l \-10" виводить останні 10 команд) і до \fIпершого\fP в інших випадках. Якщо значення \fIперший\fP не вказано, для нього буде встановлено значення, що відповідає попередній команді для редагування і \-16 для списку. .IP Якщо вказано параметр \fB\-l\fP, список команд буде виведено до стандартного виведення. Параметр \fB\-n\fP придушує виведення номерів команд у списку. Параметр \fB\-r\fP змінює порядок команд у списку на зворотний. .IP Otherwise, \fBfc\fP invokes the editor named by \fIename\fP on a file containing those commands. If \fIename\fP is not supplied, \fBfc\fP uses the value of the .SM \fBFCEDIT\fP variable, and the value of .SM \fBEDITOR\fP if .SM \fBFCEDIT\fP is not set. If neither variable is set, \fBfc\fP uses .FN vi. When editing is complete, \fBfc\fP reads the file containing the edited commands and echoes and executes them. .IP У другій формі \fBfc\fP повторно виконує \fIкоманду\fP після заміни кожного екземпляра \fIвзірця\fP на \fIзамінник\fP. \fIКоманду\fP буде оброблено у той самий спосіб, що і аргумент \fIперший\fP вище. .IP Корисною альтернативою для використання з \fBfc\fP є .Q r=\* fc \-s\*\(dq\(dq , отже, введення .Q "r cc" виконує останню команду, починаючи з .Q cc а введення .Q r повторно виконує останню команду. .IP Якщо використано першу форму, буде повернуто нульове значення, якщо не буде виявлено некоректного параметра або якщо вказані \fIперший\fP або \fIостанній\fP рядки журналу не належать до припустимого діапазону. При редагуванні та повторному виконанні файла з командами повернутим значення буде повернуте значення останньої виконаної команди або помилка, якщо станеться помилка із тимчасовим файлом. Якщо використано другу форму, повернутим станом буде стан повторно виконаної команди, якщо \fIкоманда\fP не задає коректного запису журналу. У інших випадках \fBfc\fP повертає ненульовий стан виходу. .TP \fBfg\fP [\fIспецифікація_завдання\fP] Відновити роботу завдання \fIспецифікація_завдання\fP в основному режимі і зробити його поточним завданням. Якщо аргументу \fIспецифікація_завдання\fP не вказано, буде використано дані оболонки щодо \fIпоточного завдання\fP. Повернутим значенням буде значення, яке повернуто командою, яку переведено в основний режим, або повідомлення про помилку, якщо запущено із вимкненим керуванням завданнями або, якщо запущено з увімкненим керуванням завданнями, якщо \fIспецифікація_завдання\fP не визначає коректного завдання або \fIспецифікація_завдання\fP визначає завдання. яке було запущено без керування завданнями. .TP \fBgetopts\fP \fIрядок_параметрів\fP \fIназва\fP [\fIаргумент\fP .\|.\|.] \fBgetopts\fP використовують підпрограми оболонки для обробки позиційних параметрів. Аргумент \fIрядок_параметрів\fP містить символи параметрів, які слід розпізнати; якщо після символу вказано двокрапку, параметр повинен мати аргумент, який слід відокремити від параметра пробілом. Символами параметра не можуть бути символи двокрапки та знаку питання. .IP Під час кожного виклику \fBgetopts\fP додає наступний параметр до змінної середовища \fIназва\fP, ініціалізуючи змінну \fIназва\fP, якщо її не існує, а індекс наступного аргументу, який має бути оброблено, буде записано до змінної .SM \fBOPTIND\fP. .SM \fBOPTIND\fP буде ініціалізовано до 1 кожного разу, коли буде викликано оболонку або скрипт оболонки. Якщо параметр потребує аргументу, \fBgetopts\fP записує аргумент до змінної .SM \fBOPTARG\fP. .IP Оболонка не виконує автоматично скидання .SM \fBOPTIND\fP; змінну слід скидати вручну між викликами \fBgetopts\fP у межах одного виклику оболонки, якщо слід змінити набір параметрів. .IP Якщо буде виявлено кінець параметрів, \fBgetopts\fP завершить роботу із поверненим значенням, що перевищує нуль. Для .SM \fBOPTIND\fP буде встановлено індекс першого відмінного від параметра аргументу і для \fIназви\fP буде встановлено значення ?. .IP Зазвичай, \fBgetopts\fP обробляє позиційні параметри, але якщо вказано додаткові значення, як значення \fIаргумент\fP, \fBgetopts\fP оброблятиме ці аргументи замість позиційних параметрів. .IP \fBgetopts\fP може повідомляти про помилки у два способи. Якщо першим символом \fIрядка_параметрів\fP є двокрапка, \fBgetopts\fP використає \fIмовчазний\fP режим звітування про помилки. У звичному режимі роботи \fBgetopts\fP виведе діагностичні повідомлення, якщо буде виявлено некоректні параметри або пропущені аргументи параметрів. Якщо для змінної .SM \fBOPTERR\fP встановлено значення 0, \fBgetopts\fP не покаже жодних повідомлень про помилки, навіть якщо першим символом \fIрядка_параметрів\fP не буде двокрапка. .IP Якщо \fBgetopts\fP виявить некоректний параметр, програма запише ? до \fIназва\fP і, якщо команда працює не у мовчазному режимі, виводить повідомлення про помилку і скасовує встановлення значення .SM \fBOPTARG\fP. Якщо \fBgetopts\fP працює у мовчазному режимі, програма встановить значення символу знайденого параметра для .SM \fBOPTARG\fP, а діагностичне повідомлення виведено не буде. .IP Якщо не буде знайдено обов'язкового аргументу і \fBgetopts\fP працює не у мовчазному режимі, для \fIназви\fP буде встановлено значення знаку питання (\^\fB?\fP\^) для \fIназви\fP, скасовано визначення .SM \fBOPTARG\fP і виведено діагностичне повідомлення. Якщо \fBgetopts\fP працює у мовчазному режимі, для \fIназви\fP буде встановлено значення двокрапки (\^\fB:\fP\^) для \fIназви\fP, для .SM \fBOPTARG\fP буде встановлено значення знайденого символу параметра. .IP \fBgetopts\fP повертає «істину», якщо буде знайдено параметр, вказаний або невказаний. Повертає «хибність», якщо буде виявлено кінець параметрів або станеться помилка. .TP \fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIназва_файла\fP] [\fB\-dt\fP] [\fIназва\fP] Щоразу, коли викликають \fBhash\fP, команда запам'ятовує повний шлях команди \fIназва\fP, визначений шляхом пошуку у каталогах \fB$PATH\fP. Будь\-який раніше збережений шлях, пов'язаний з \fIназвою\fP, буде відкинуто. Якщо вказано параметр \fB\-p\fP, \fBhash\fP використовує \fIназву файла\fP як повний шлях команди. .IP Параметр \fB\-r\fP наказує оболонці забути всі збережені місця. Надання значення змінній \fBPATH\fP також очищує всі хешовані назви файлів. Параметр \fB\-d\fP наказує оболонці забути збережені місця розташування усіх \fIназв\fP. .IP Якщо вказано параметр \fB\-t\fP, \fBhash\fP виведе повний шлях, що відповідає кожному запису \fIназва\fP. Якщо з \fB\-t\fP вказано кілька аргументів \fIназва\fP, \fBhash\fP виведе \fIназву\fP перед відповідним хешованим повним шляхом. Параметр \fB\-l\fP наказує програмі вивести дані у форматі, який можна повторно використовувати як вхідні дані. .IP Якщо аргументи не вказано або якщо вказано лише \fB\-l\fP, \fBhash\fP виводить дані щодо збережених команд. Параметри \fB\-t\fP, \fB\-d\fP та \fB\-p\fP (параметри, які діють на аргументи \fIназва\fP) є взаємовиключними. Активним буде лише один. Якщо вказано більше одного, \fB\-t\fP має вищий пріоритет, ніж \fB\-p\fP, і обидва мають вищий пріоритет, ніж \fB\-d\fP. .IP Стан повернення дорівнює нулю, якщо не знайдено \fIназви\fP або не надано недійсний параметр. .TP \fBhelp\fP [\fB\-dms\fP] [\fIвзірець\fP] Показати корисні відомості щодо вбудованих команд. Якщо вказано \fIвзірець\fP, \fBhelp\fP надає докладну довідку для усіх команд, назви яких відповідають взірцю \fIвзірець\fP, як описано нижче. Якщо взірець не вказано, виводить список для усіх вбудованих команд і складених команд оболонки. .IP Параметри, якщо їх надано, мають таке значення: .RS .TP .PD 0 \fB\-d\fP Показати короткий опис для кожного \fIвзірця\fP .TP \fB\-m\fP Показати опис кожного \fIвзірця\fP у форматі, який подібний до сторінок підручника .TP \fB\-s\fP Показати лише короткий опис користування для кожного \fIвзірця\fP .PD .RE .IP Якщо \fIвзірець\fP містить символи відповідності взірцю (див. .SM \fBВідповідність за взірцем\fP вище), його буде оброблено як взірець оболонки, а \fBhelp\fP виведе опис усіх тем довідки, що відповідає \fIвзірцю\fP. .IP Якщо ні, і \fIвзірець\fP точно збігається з назвою теми довідки, \fBhelp\fP виведе опис, пов'язаний з цією темою. В іншому випадку \fBhelp\fP виконає зіставлення префіксів і виведе описи всіх відповідних тем довідки. .IP Стан повернення буде рівним 0, якщо буде знайдено хоча б одну команду, яка відповідає \fIвзірцю\fP. .TP \fBhistory [\fP\fIn\fP\fB]\fP .PD 0 .TP \fBhistory\fP \fB\-c\fP .TP \fBhistory \-d\fP \fIзсув\fP .TP \fBhistory \-d\fP \fIпочаток\fP\-\fIкінець\fP .TP \fBhistory\fP \fB\-anrw\fP [\fIназва_файла\fP] .TP \fBhistory\fP \fB\-p\fP \fIаргумент\fP [\fIаргумент\fP .\|.\|.] .TP \fBhistory\fP \fB\-s\fP \fIаргумент\fP [\fIаргумент\fP .\|.\|.] .PD Без параметрів, вивести список журналу команд з номерами рядків. Записи з префіксами \fB*\fP змінено. З аргументом \fIn\fP перелічує лише останні \fIn\fP записів. Якщо змінна оболонки .SM \fBHISTTIMEFORMAT\fP встановлена і не є порожньою, вона використовується як форматний рядок для \fIstrftime\fP(3), щоб показати мітку часу, пов'язану з кожним показаним записом журналу. Якщо для \fBhistory\fP використано .SM \fBHISTTIMEFORMAT\fP, проміжний інтервал між відформатованою позначкою часу та записом журналу виведено не буде. .IP Якщо вказано \fIназву файла\fP, \fBhistory\fP використає її як назву файла журналу; якщо ні, буде використано значення .SM \fBHISTFILE\fP. Якщо \fIназву файла\fP не вказано, а .SM \fBHISTFILE\fP не встановлено або має порожнє значення, параметри \fB\-a, \-n, \-r,\fP та \fB\-w\fP ні на що не вплинуть. .IP Параметри, якщо їх надано, мають таке значення: .RS .PD 0 .TP \fB\-c\fP Спорожнити список журналу вилученням з нього усіх записів. Можна користуватися з іншими параметрами для заміни списку журналу. .TP \fB\-d\fP \fIвідступ\fP Вилучити запис журналу на позиції \fIвідступ\fP. Якщо значення \fIвідступ\fP є від'ємним, його буде відраховано назад від позиції, яка на одиницю більша за останню позицію у журналі. Отже, від'ємні індекси відраховують від кінця журналу, а індекс \-1 означає поточну команду \fBhistory \-d\fP. .TP \fB\-d\fP \fIпочаток\fP\-\fIкінець\fP Вилучити з журналу діапазон записів між позиціями \fIпочаток\fP і \fIкінець\fP, включно. Додатні і від'ємні значення \fIпочаток\fP і \fIкінець\fP буде оброблено в описаний вище спосіб. .TP \fB\-a\fP Дописати .Q new рядки журналу до файла журналу. Це рядки журналу, які введено з моменту початку поточного сеансу \fBbash\fP, але які ще не дописано до файла журналу. .TP \fB\-n\fP Прочитати рядки журналу, які ще не прочитано з файла журналу, і додати їх до поточного списку журналу. Це рядки, які дописано до файла журналу з моменту початку поточного сеансу \fBbash\fP. .TP \fB\-r\fP Прочитати файл журналу і дописати його вміст до поточного списку журналу. .TP \fB\-w\fP Записати поточний список журналу до файла журналу, перезаписавши вміст файла журналу. .TP \fB\-p\fP Виконати заміну за журналом для наступних \fIаргументів\fP і вивести результат до стандартного виведення без збереження результатів до списку журналу. Для вимикання звичного розгортання за журналом усі \fIаргументи\fP має бути взято у лапки. .TP \fB\-s\fP Зберегти \fIаргументи\fP у списку журналу як єдиний запис. Перед додаванням \fIаргументів\fP останню команду у списку журналу буде вилучено. .PD .RE .IP Якщо встановлено змінну .SM \fBHISTTIMEFORMAT\fP, інформацію щодо мітки часу, пов'язаної з кожним записом журналу \fBhistory\fP записує до файла журналу, з позначкою символу коментаря журналу, як це описано вище. Коли файл журналу зчитується, рядки, що починаються з символу коментарю, після якого одразу йде цифра, інтерпретуються, як мітки часу для відповідного запису журналу. .IP Повернутим значенням буде 0, якщо усі параметри коректні, на сталося помилки під час читання або запису файлу журналу, на надано неправильного аргументу \fIвідступ\fP або діапазону для \fB\-d\fP, або помилка під час розгортання за журналом, наданого як аргумент до \fB\-p\fP. .TP \fBjobs\fP [\fB\-lnprs\fP] [ \fIспецифікація_завдання\fP .\|.\|. ] .PD 0 .TP \fBjobs\fP \fB\-x\fP \fIкоманда\fP [ \fIаргументи\fP .\|.\|. ] .PD Перша форма показує активні завдання. Параметри мають наступні значення: .RS .PD 0 .TP \fB\-l\fP Вивести список ідентифікаторів процесів разом з іншою інформацією. .TP \fB\-n\fP Вивести відомості лише про завдання, стан яких було змінено з моменту, коли користувача востаннє інформували про їхній стан. .TP \fB\-p\fP Вивести лише ідентифікатор процесу, який є лідером групи процесів завдання. .TP \fB\-r\fP Показати лише завдання, що працюють. .TP \fB\-s\fP Показати лише зупинені завдання. .PD .RE .IP Якщо вказано аргумент \fIспецифікація_завдання\fP, \fBjobs\fP обмежуватиме виведення відомостями щодо відповідного завдання. Буде повернуто стан 0, якщо не буде виявлено некоректного параметра або некоректної заданої \fIспецифікації_завдання\fP. .IP Якщо надано опцію \fB\-x\fP, \fBjobs\fP замінює будь\-який \fIjobspec\fP, знайдений в \fIcommand\fP або \fIargs\fP відповідним ІД групи процесів, та виконує \fIcommand\fP передаючи йому \fIargs\fP, і вертаючи його стан виходу. .TP \fBkill\fP [\fB\-s\fP \fIспецифікація_сигналу\fP | \fB\-n\fP \fIномер_сигналу\fP | \fB\-\fP\fIспецифікація_сигналу\fP] \fIідентифікатор\fP [ .\|.\|. ] .PD 0 .TP \fBkill\fP \fB\-l\fP|\fB\-L\fP [\fIsigspec\fP | \fIexit_status\fP] .PD Надсилає сигнал, визначений \fIспецифікацією_сигналу\fP або \fIномером сигналу\fP, процесам, вказаним кожним \fIідентифікатором\fP. Кожен \fIідентифікатор\fP може бути \fIспецифікацією завдання\fP або \fIідентифікатором процесу\fP. \fIспецифікація_сигналу\fP — це або назва сигналу без урахування регістру, наприклад .SM \fBSIGKILL\fP (з префіксом .SM \fBSIG\fP або без нього), або номер сигналу; \fIномер сигналу\fP — це номер сигналу. Якщо \fIспецифікацію сигналу\fP не вказано, то \fBkill\fP надсилає .SM \fBSIGTERM\fP. .IP Використання параметра \fB\-l\fP призводить до виведення назв сигналів. Якщо при заданому параметрі \fB\-l\fP надано будь\-які аргументи, \fBkill\fP виводить назви сигналів, що відповідають аргументам, а стан виходу дорівнює 0. Аргумент \fIстан_виходу\fP функції \fB\-l\fP – це число, що визначає або номер сигналу, або стан завершення процесу, завершеного сигналом; якщо його вказано, \fBkill\fP виводить назву сигналу, який спричинив завершення процесу. \fBkill\fP припускає, що стани завершення процесу перевищують 128; всі значення, які є меншими за це, є номером сигналу. Параметр \fB\-L\fP еквівалентний \fB\-l\fP. .IP \fBkill\fP повертає true, якщо було успішно надіслано принаймні один сигнал, і false, якщо сталася помилка або було виявлено некоректний параметр. .TP \fBlet\fP \fIarg\fP [\fIarg\fP .\|.\|.] Кожен \fIаргумент\fP є арифметичним виразом, який треба обчислити (див. .SM \fBАРИФМЕТИЧНЕ ОЦІНЮВАННЯ\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Якщо останній \fIarg\fP обраховано в 0, \fBlet\fP вертає 1; інакше буде повернуто 0. .TP \fBlocal\fP [\fIoption\fP] [\fIназва\fP[=\fIvalue\fP] .\|.\|. | \- ] Для кожного аргументу створює локальну змінну з назвою \fIназва\fP і надає їй \fIзначення\fP. Значенням \fIпараметра\fP може бути будь\-який з параметрів, які приймає \fBdeclare\fP. Якщо \fBlocal\fP буде використано всередині функції, область видимості змінної \fIназва\fP обмежена цією функцією та її дочірніми екземплярами. Використання \fBlocal\fP поза межами функції є помилкою. .IP Якщо \fIназва\fP дорівнює \-, це робить набір параметрів оболонки локальним для функції, з якої викликано \fBlocal\fP: будь\-які параметри оболонки, змінені за допомогою вбудованої функції \fBset\fP всередині функції після виклику \fBlocal\fP, відновлюються до своїх початкових значень після повернення значення з функції. Відновлення виконується так, ніби було виконано серію команд \fBset\fP для відновлення значень, такими, які вони були до запуску функції. .IP Без операндів \fBlocal\fP записує список локальних змінних до стандартного виведення. .IP Буде повернуто стан 0, якщо \fBlocal\fP не використано поза функцією, не було вказано некоректного значення \fIназва\fP, або не було вказано придатної лише для читання \fIназви\fP змінної. .TP \fBlogout [\fP\fIn\fP\fB]\fP Вийти з оболонки входу до системи, повернувши стан \fIn\fP до батьківського процесу оболонки. .TP \fBmapfile\fP [\fB\-d\fP \fIроздільник\fP] [\fB\-n\fP \fIкількість\fP] [\fB\-O\fP \fIпочаток\fP] [\fB\-s\fP \fIкількість\fP] [\fB\-t\fP] [\fB\-u\fP \fIдескриптор_файла\fP] [\fB\-C\fP \fIзворотний_виклик\fP] [\fB\-c\fP \fIчастка\fP] [\fIмасив\fP] .PD 0 .TP \fBreadarray\fP [\fB\-d\fP \fIроздільник\fP] [\fB\-n\fP \fIкількість\fP] [\fB\-O\fP \fIпочаток\fP] [\fB\-s\fP \fIкількість\fP] [\fB\-t\fP] [\fB\-u\fP \fIдескриптор_файла\fP] [\fB\-C\fP \fIзворотний_виклик\fP] [\fB\-c\fP \fIчастка\fP] [\fIмасив\fP] .PD Прочитати рядки зі стандартного джерела вхідних даних до змінної — індексованого масиву \fIмасив\fP, або прочитати ці дані з файла із дескриптором \fIдескриптор_файла\fP, якщо вказано параметр \fB\-u\fP. Типовим \fIмасивом\fP є змінна .SM \fBMAPFILE\fP. Параметри, якщо їх вказано, мають такі призначення: .RS .PD 0 .TP \fB\-d\fP Перший символ із \fIроздільник\fP використовується для закінчення кожного рядка введення замість символу нового рядка. Якщо рядок \fIроздільник\fP порожній, \fBmapfile\fP закінчить рядок, коли прочитає символ NUL. .TP \fB\-n\fP Скопіювати не більше \fIкількість\fP рядків. Якщо значенням \fIкількість\fP є 0, буде скопійовано усі рядки. .TP \fB\-O\fP Розпочати встановлення значень \fIмасиву\fP з індексу \fIпочаток\fP. Типовим індексом є 0. .TP \fB\-s\fP Відкинути перших \fIcount\fP прочитаних рядків. .TP \fB\-t\fP Вилучити кінцевий \fIроздільник\fP (типовим роздільником є символ нового рядка) з кожного прочитаного рядка. .TP \fB\-u\fP Прочитати рядки з файла із дескриптором \fIдескриптор_файла\fP, а не зі стандартного джерела вхідних даних. .TP \fB\-C\fP Обчислювати \fIзворотний_виклик\fP кожного разу, коли буде прочитано \fIчастку\fP рядків. \fIЧастку\fP буде задано параметром \fB\-c\fP. .TP \fB\-c\fP Вказати кількість рядків, які буде прочитано між послідовними викликами \fIзворотного_виклику\fP. .PD .RE .IP Якщо \fB\-C\fP вказано без \fB\-c\fP, типовий квант дорівнює 5000. Коли обчислюється \fIcallback\fP оцінюється, йому, як додаткові аргументи, надаються індекс наступного елемента масиву, який потрібно присвоїти, і рядок, який потрібно присвоїти цьому елементу. \fIcallback\fP обчислюється після прочитання рядка, але до присвоєння значення елементу масиву. .IP Якщо початок не вказано явно, \fBmapfile\fP спорожнить \fIмасив\fP до встановлення для нього значень. .IP \fBmapfile\fP повертає нуль, якщо не буде виявлено некоректних параметрів або аргументів параметрів, якщо \fIмасив\fP не буде некоректним або таким, для якого не можна встановлювати значення, і якщо \fIмасив\fP є індексованим масивом. .TP \fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] Вилучає запис зі стосу каталогів. Нумерація елементів виконується з 0 з першого каталогу зі списку \fBdirs\fP, отже \fBpopd\fP є еквівалентним .Q "popd +0." Без аргументів вилучає верхній каталог зі стосу і переходить до нового верхнього каталогу. Аргументи, якщо вказано, мають таке значення: .RS .PD 0 .TP \fB\-n\fP Придушує звичайну зміну каталогу при вилученні каталогів зі стосу, отже, дії відбуваються лише із стосом. .TP \fB+\fP\fIn\fP Вилучає \fIn\fP\-ий запис, рахуючи зліва списку, показаного \fBdirs\fP; відлік починається з нуля зі стосу. Приклад: .Q "popd +0" вилучає перший каталог, .Q "popd +1" другий. .TP \fB\-\fP\fIn\fP Вилучає \fIn\fP\-ий запис, рахуючи справа списку, показаного \fBdirs\fP; відлік починається з нуля. Приклад: .Q "popd \-0" вилучає останній каталог, .Q "popd \-1" передостанній. .PD .RE .IP Якщо до верхнього елемента у стосі каталогів буде внесено зміни, і було вказано параметр B, \fBpopd\fP використовує вбудовану команду \fBcd\fP для переходу до каталогу на вершині стосу. Якщо спроба виконання \fBcd\fP завершиться невдало, \fBpopd\fP поверне ненульове значення. .IP У інших випадках \fBpopd\fP повертає значення «хибність», якщо буде виявлено некоректний параметр, стос каталогів є порожнім або вказано запис стосу каталогів, якого не існує. .IP Якщо виконання команди \fBpopd\fP буде успішним, \fBbash\fP поверне \fBdirs\fP, щоб показати остаточний вміст стосу каталогів, і поверне стан 0. .TP \fBprintf\fP [\fB\-v\fP \fIзмінна\fP] \fIформат\fP [\fIаргументи\fP] Записати сформатовані \fIаргументи\fP до стандартного виходу під контролем \fIформат\fP. Опція \fB\-v\fP призначає вивід змінній \fIvar\fP замість друкування на стандартний вихід. .IP \fIФормат\fP є символьним рядком, що містить три типи об'єктів: звичайні символи, що просто копіюються на стандартний вихід, керівна послідовність символів, які перетворюємо і копіюємо на стандартний вихід, та специфікації формату, кожна з яких друкує наступний подальший \fIаргумент\fP. Окрім стандартних символів формату \fIprintf\fP(3) \fBcCsSndiouxXeEfFgGaA\fP, \fBprintf\fP інтерпретує наступні додаткові специфікатори форматування: .RS .PD 0 .TP \fB%b\fP примушує \fBprintf\fP розкривати керівні послідовності із символом зворотної похилої риски відповідно до \fIаргументу\fP, так само як \fBecho \-e\fP. .TP \fB%q\fP змушує \fBprintf\fP виводити відповідний \fIаргумент\fP у форматі, який можна повторно використовувати як вхідні дані оболонки. \fB%q\fP та \fB%Q\fP використовують стиль лапок \fB$\*'\*'\fP, якщо будь\-які символи в рядку аргументу цього вимагають, та зворотну похилу риску в іншому випадку. Якщо рядок формату використовує альтернативну форму \fIprintf\fP, в обох цих форматах екранування рядка аргументу слід виконувати за допомогою одинарних лапок. .TP \fB%Q\fP подібний до \fB%q\fP, але застосовує будь\-яку надану точність до аргументу \fIаргумент\fP до його нейтралізації. .TP \fB%(\fP\fIформат_дати\fP\fB)T\fP примушує \fBprintf\fP виводити рядок дати\-часу, що є результатом використання \fIdatefmt\fP, як рядку формату для \fIstrftime\fP(3). Відповідне \fIargument\fP є цілим числом, що відповідає кількості секунд з початку епохи. Для цього специфікатора форматування передбачено розпізнавання двох спецзначень: \-1 представляє поточний час, і \-2 представляє час, коли було запущено оболонку. Якщо аргументів не вказано, конвертація поводиться, ніби надано \-1. Це є винятком зі звичайної поведінки \fBprintf\fP. .PD .RE .IP Специфікатори форматування %b, %q та %T всі використовують аргументи ширини та точності поля зі специфікації формату та записують стільки байтів з (або використовують для того широкого поля) розширеного аргументу, що за звичай має більше символів, ніж оригінал. .IP Специфікатор формату %n приймає відповідний аргумент, який буде оброблено як назву змінної оболонки. .IP .\" .IP .\" The %s format specifier understands the "altform" flag (#) and behaves .\" identically to the %b format specifier if it's supplied. Специфікатори формату %s та %c приймають модифікатор l (long), який змушує їх перетворювати рядок аргументу на рядок із широкими символами та застосовувати будь\-яку надану ширину поля та точність у символах, а не в байтах. Специфікатори формату %S та %C еквівалентні %ls та %lc відповідно. .IP Аргументи для специфікаторів нерядкових форматів розглядаються як константи C, за винятком, коли дозволено передній знак плюса чи мінуса, і якщо передній символ є одинарною або подвійною лапкою, значенням є числові значення наступного символу з використанням поточної локалі. .IP \fIФормат\fP буде використано належну кількість разів для форматування усіх \fIаргументів\fP. Якщо у \fIформаті\fP визначено більше \fIаргументів\fP, ніж вказано, зайві специфікації формату буде оброблено так, наче їм передано нульові значення або порожні рядки, відповідно. Повернутим значенням буде нуль при успіху і значення, яке є відмінним від нуля, якщо буде надано некоректний параметр або станеться помилка запису або призначення. .TP \fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] .PD 0 .TP \fBpushd\fP [\fB\-n\fP] [\fIкаталог\fP] .PD Додає каталог на верхівку стосу або обертах стос так, щоб на верхівці опинився поточний робочий каталог. Якщо не вказано аргументів, \fBpushd\fP міняє місцями два верхніх елементи стосу каталогів. Аргументи, якщо їх вказано, мають таке призначення: .RS .PD 0 .TP \fB\-n\fP Придушує звичайну зміну каталогу при ротації або додаванні каталогів до стосу, отже, дії відбуваються лише із стосом. .TP \fB+\fP\fIn\fP Прокручує стек так, щоб \fIn\fP\-ий каталог (відлік ведеться з лівої частини списку, показаного \fBdirs\fP і починається з нуля) опинився на вершині списку. .TP \fB\-\fP\fIn\fP Прокручує стек так, щоб \fIn\fP\-ий каталог (відлік ведеться з правої частини списку, показаного \fBdirs\fP і починається з нуля) опинився на вершині списку. .TP \fIкаталог\fP Додає \fIкаталог\fP до стосу каталогів на верхню позицію. .PD .RE .IP Після внесення змін до стосу, якщо було вказано параметр \fB\-n\fP, \fBpushd\fP використовує вбудовану команду \fBcd\fP для переходу до каталогу на вершині стосу. Якщо спроба виконання \fBcd\fP завершиться невдало, \fBpushd\fP поверне ненульове значення. .IP В інших випадках, якщо не вказано аргументів, \fBpushd\fP повертає 0, якщо стос каталогів не є порожнім. При циклічному переході стосом каталогів \fBpushd\fP повертає 0, якщо стос каталогів не є порожнім або буде вказано елемент \fIn\fP стосу каталогів, якого не існує. .IP Якщо виконання команди \fBpushd\fP буде успішним, \fBbash\fP поверне \fBdirs\fP, щоб показати остаточний вміст стосу каталогів. .TP \fBpwd\fP [\fB\-LP\fP] Надрукувати абсолютний шлях поточного робочого каталогу. Якщо додано параметр \fB\-P\fP або ввімкнено \fB фізичний параметр \-o\fP для вбудованої команди \fBset\fP, надрукований шлях не міститиме символьних посилань. Якщо використовується параметр \fB\-L\fP, надрукований шлях може містити символьні посилання. Стан повернення дорівнює 0, якщо під час читання назви поточного каталогу не виникло помилки і вказано лише дійсні параметри. .TP \fBread\fP [\fB\-Eers\fP] [\fB\-a\fP \fIназва\fP] [\fB\-d\fP \fIроздільник\fP] [\fB\-i\fP \fIтекст\fP] [\fB\-n\fP \fIкількість_символів\fP] [\fB\-N\fP \fIкількість_символів\fP] [\fB\-p\fP \fIзапит\fP] [\fB\-t\fP \fIчас_очікування\fP] [\fB\-u\fP \fIдескриптор_файла\fP] [\fIназва\fP .\|.\|.] Буде прочитано один рядок зі стандартного джерела вхідних даних або з файла із дескриптором \fIдескриптор_файла\fP, який передано як аргумент параметра \fB\-u\fP, рядок буде поділено на слова, як це описано .ie \n(zZ=1 in \fIbash\fP (1) .el above у розділі \fBПоділ на слова\fP, і перше слово стане значенням першої \fIназви\fP, друге слово — другої \fIназви\fP тощо. Якщо кількість слів буде більшою за кількість назв, залишок списку слів разом із роздільниками стане значенням останньої \fIназви\fP. Якщо з потоку вхідних даних буде прочитано менше слів, ніж назв, решті назв буде надано порожні значення. Для поділу рядка на слова буде використано символи у значення зі змінної .SM \fBIFS\fP. Також буде використано ті самі правила, які оболонка використовує для розгортання (описано .ie \n(zZ=1 in \fIbash\fP (1) .el above у розділі \fBПоділ на слова\fP). Для усування спеціального призначення наступного прочитаного символу або для позначення продовження рядка можна скористатися символом зворотної похилої риски (\fB\e\fP). .IP Параметри, якщо їх надано, мають таке значення: .RS .PD 0 .TP \fB\-a \fP\fIназва_масиву\fP Слова присвоюються послідовним індексам змінної\-масиву \fIaname\fP, починаючи з 0. \fIaname\fP є не встановленим перед присвоєнням нових значень. Інші аргументи \fIназва\fP нехтуються. .TP \fB\-d \fP\fIроздільник\fP Перший символ із \fIроздільник\fP використовується для закінчення кожного рядка введення замість символу нового рядка. Якщо рядок \fIроздільник\fP порожній, \fBread\fP закінчить рядок, коли прочитає символ NUL. .TP \fB\-e\fP Якщо стандартні вхідні дані надходять з термінала, для отримання рядка \fBread\fP буде використано \fBreadline\fP (див. .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) readline використовує поточні (або типові, якщо редагування рядків раніше не було активним) параметри редагування, але використовує типове доповнення назв файлів самої бібліотеки \fBReadline\fP. .TP \fB\-E\fP Якщо стандартні вхідні дані надходять з термінала, для отримання рядка \fBread\fP буде використано \fBreadline\fP (див. .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) для отримання рядка. \fBReadline\fP використовує поточні (або типові, якщо редагування рядків раніше не було активним) параметри редагування, але використовує типове доповнення назв файлів bash, включно із програмованим доповненням. .TP \fB\-i \fP\fIтекст\fP Якщо \fBreadline\fP використовується для читання рядка, перед початком редагування \fBread\fP розміщує у буфері редагування \fIтекст\fP. .TP \fB\-n \fP\fIк\-ть_символів\fP \fBread\fP повертається після прочитання \fIкількість_символів\fP символів, а не очікує повного рядка введення, якщо не натрапить на символ кінця файла або буде перевищено час очікування на дані від \fBread\fP, але зважає на роздільник, якщо перед роздільником прочитано менше ніж \fIкількість_символів\fP символів. .TP \fB\-N \fP\fIк\-ть_символів\fP \fBread\fP повертається після прочитання саме \fIкількість_символів\fP символів, а не чекає на повний рядок введення, якщо не зустрічається EOF або \fBread\fP не перестає працювати. Усі символи\-роздільники, які зустрічаються у введених даних, не обробляються спеціально і не викликають повернення з \fBread\fP, аж доки не буде прочитано \fIкількість_символів\fP символів. Результат не розбивається на символи в \fBIFS\fP; сенс у тому, що змінній примвоюються саме прочитані символи (за винятком зворотної похилої риски; див. нижче параметр \fB\-r\fP). .TP \fB\-p \fP\fIзапит\fP Вивести \fIзапит\fP до стандартного виведення помилок, без кінцевого символу нового рядка, до спроб читання будь\-яких вхідних даних, але лише якщо вхідні дані надходять з термінала. .TP \fB\-r\fP Символ зворотної похилої риски не працює як символ екранування. При цьому, символ зворотної похилої риски вважається частиною рядка. Зокрема, пару «зворотна похила риска — новий рядок» не можна використовувати як послідовність продовження рядка. .TP \fB\-s\fP Мовчазний режим. Якщо ввід йде з термінала, символи не відбиваються на вивід. .TP \fB\-t \fP\fIчас_очікування\fP Спричиняє перевищення часу очікування у \fBread\fP і повертає повідомлення про помилку, якщо не буде прочитано повний рядок вхідних даних (або вказану кількість символів) протягом \fIчас_очікування\fP секунд. \fIЧасом очікування\fP може бути десяткове число із дробовою частиною після десяткової крапки. Цей параметр працюватиме, лише якщо \fBread\fP читає вхідні дані з термінала, каналу або іншого особливого файла — він не працюватиме при читанні зі звичайних файлів. При перевищенні часу очікування у \fBread\fP команда зберігає будь\-які частково прочитані вхідні дані до вказаної змінної \fIназва\fP, а станом виходу буде число, більше за 128. Якщо значенням \fIчасу_очікування\fP є 0, \fBread\fP повертатиме керування негайно, без спроби прочитати якісь дані. У цьому випадку станом виходу є 0, якщо вхідні дані доступні для файла із вказаним дескриптором або читання поверне EOF. Якщо це не так, стан повернення буде ненульовим. .TP \fB\-u \fP\fIдескриптор_файла\fP Прочитати вхідні дані з файла із дескриптором \fIдескриптор_файла\fP, а не зі стандартного джерела вхідних даних. .PD .RE .IP Окрім випадків, коли \fIроздільник\fP є порожнім рядком, \fBread\fP ігноруватиме усі символи NUL у вхідних даних. .IP Якщо не вказано \fIназв\fP, прочитаний рядок, без кінцевого роздільника, але без інших змін, буде встановлено як значення для змінної .SM \fBREPLY\fP. .IP Станом виходу буде нуль, якщо не буде виявлено символу кінця файла, не буде перевищено час очікування на завершення \fBread\fP (у цьому випадку стан завершення перевищуватиме 128), не буде помилки встановлення значення (зокрема, встановлення значення для змінної, яку призначено лише для читання) або не буде вказано некоректного дескриптора файла як аргументу \fB\-u\fP. .TP \fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fIназва\fP[=\fIслово\fP] .\|.\|.] .PD Вказані \fIназви\fP буде позначено як так, які призначено лише для читання; значення цих \fIназв\fP не можна буде змінити наступними інструкціями зі встановлення або скасування встановлення значень. Якщо вказано параметр \fB\-f\fP, кожна \fIназва\fP вважатиметься функцією оболонки. Використання параметра \fB\-a\fP обмежує змінні лише індексованими масивами, а параметра \fB\-A\fP — лише асоціативними масивами. Якщо вказано обидва параметри, пріоритет матиме \fB\-A\fP. Якщо аргументів \fIназва\fP не вказано, або якщо вказано параметр \fB\-p\fP, буде виведено список усіх придатних лише для читання назв. Для обмеження виведених даних піднабором набору призначених лише для читання назв можна скористатися іншими параметрами. Параметр \fB\-p\fP призводить до виведення у форматі, яким можна скористатися як вхідними даними. .IP \fBreadonly\fP дозволяє встановлювати значення змінної одночасно зі зміною атрибута «лише читання», додаючи після назви змінної =\fIзначення\fP. Це встановлює для змінної \fIзначення\fP під час зміни атрибута «лише читання». .IP Стан повернення дорівнює 0, якщо не виявлено недійсний параметр, одна з \fIназв\fP є некоректною назвою змінної оболонки, або \fB\-f\fP вказано з \fIназвою\fP, яке не є функцією. .TP \fBreturn\fP [\fIn\fP] Зупинити виконання функції оболонки або початкового файла і повернути значення, вказане \fIn\fP, туди, звідки надійшов виклик. Якщо \fIn\fP пропущено, поверненим станом буде стан останньої виконаної команди. Якщо \fBreturn\fP виконується обробником перехоплень, останньою командою, яка використовується для визначення стану, буде остання команда, виконана перед обробником перехоплень. Якщо \fBreturn\fP виконується під час перехоплення \fBDEBUG\fP, останньою командою, яка використовується для визначення стану, буде остання команда, виконана обробником перехоплень перед викликом \fBreturn\fP. .IP Якщо \fBreturn\fP використовують для завершення виконання скрипту, що виконується командою \fB.\fP (\fBsource\fP), оболонка зупиняє виконання цього скрипту і повертає або \fIn\fP, або стан завершення останньої команди, виконаної в скрипті, як стан завершення скрипту. Якщо вказано \fIn\fP, повернутим значенням буде його найменш значущі 8 бітів. .IP Будь\-яка команда, пов'язана з перехопленням \fBRETURN\fP, виконується до того, як виконання відновиться після функції або скрипту. .IP Стан повернення буде ненульовим, якщо \fBreturn\fP передано як нечисловий аргумент або використовується поза функцією, а не під час виконання скрипту за допомогою \fB.\fP\^ або \fBsource\fP. .TP \fBset\fP [\fB\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIназва\-параметра\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIаргумент\fP .\|.\|.] .PD 0 .TP \fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIназва\-параметра\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIаргумент\fP .\|.\|.] .TP \fBset \-o\fP .TP \fBset +o\fP .PD Без параметрів, буде виведено назву і значення усіх змінних оболонки у форматі, яким можна повторно скористатися як вхідними даними для встановлення або повторного встановлення поточного набору змінних. Значення змінних, які призначено лише для читання, не може бути змінено. У режимі posix буде виведено лише змінні оболонки. Виведені дані буде упорядковано відповідно до поточної локалі. Якщо вказано параметри, вони встановлюватимуть значення або скасовуватимуть встановлення значення атрибутів оболонки. Усі аргументи, які лишаться після обробки параметрів, вважатимуться значенням позиційний параметрів. Їх буде використано як значення, за порядком, \fB$1\fP, \fB$2\fP, \&.\|.\|., \fB$\fP\fIn\fP. Параметри, якщо їх вказано, мають таке призначення: .RS .PD 0 .TP 8 \fB\-a\fP Кожній змінній або функції, що створюється або змінюється, надається атрибут експорту та позначка для експорту в середовище наступних команд. .TP 8 \fB\-b\fP Повідомляти про стан припинених фонових завдань негайно, а не перед наступним основним запитом або після завершення роботи основної команди. Діє лише тоді, коли увімкнено керування завданнями. .TP 8 \fB\-e\fP .PD Вийти негайно, якщо \fIконвеєр\fP (який може місити одну \fIпросту команду\fP), \fIсписок\fP або \fIскладена команда\fP (див. .SM \fBГРАМАТИКА ОБОЛОНКИ\fP .ie \n(zZ=1 in \fIbash\fP(1)), .el above), завершується з ненульовим станом. Вихід з оболонки не відбувається, якщо команда, яка не працює, є частиною списку команд відразу після зарезервованого слова \fBwhile\fP або \fBuntil\fP, частиною тесту після зарезервованих слів \fBif\fP або \fBelif\fP, частиною будь\-якої команди, виконуваної в списках \fB&&\fP або \fB||\fP, за винятком команди після останнього \fB&&\fP або \fB||\fP, будь\-якою командою в конвеєрі, крім останньої (відповідно до стану параметра оболонки \fBpipefail\fP), або якщо повернуте командою значення інвертовано за допомогою \fB!\fP. Якщо складена команда, відмінна від підоболонки, повертає ненульовий стан через невдачу команди тоді, коли нехтувалося \fB\-e\fP, вихід з оболонки не відбувається. Якщо встановлено пастку на \fBERR\fP, вона виконується перед виходом із оболонки. Цей параметр застосовується до середовища оболонки та кожного із середовищ підоболонки окремо (див. .SM \fBСЕРЕДОВИЩЕ ВИКОНАННЯ КОМАНД\fP .ie \n(zZ=1 in \fIbash\fP(1)), .el above), , і може призвести до виходу з підоболонки, перш ніж у ній буде виконано всі команди. .IP Якщо складена команда або функція оболонки виконується в контексті, де нехтується \fB\-e\fP, на жодну з команд, виконуваних у межах складеної команди або тіла функції, не вплине параметр \fB\-e\fP, навіть якщо \fB\-e\fP встановлено і команда повертає стан відмови. Якщо складена команда або функція оболонки встановлює \fB\-e\fP під час виконання в контексті, де \fB\-e\fP нехтується, це налаштування не матиме жодного ефекту до завершення складеної команди або команди, що містить виклик функції. .PD 0 .TP 8 \fB\-f\fP Вимкнути розгортання шляхів. .TP 8 \fB\-h\fP Запам'ятати розташування команд, у якому оболонка шукає їх для виконання. Типово увімкнено. .TP 8 \fB\-k\fP Усі аргументи у формі інструкцій із встановлення значень, а не лише ті, які передують назві команди, буде записано до середовища для команди. .TP 8 \fB\-m\fP Режим спостереження. Керування завданнями увімкнено. Типово, цей параметр увімкнено для інтерактивних оболонок у системах, де передбачено таку підтримку (див. .SM \fBКЕРУВАННЯ ЗАВДАННЯМИ\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Усі процеси працюватимуть в окремій групі процесів. При завершенні фонового завдання оболонка виведе рядок зі станом виходу завдання. .TP 8 \fB\-n\fP Прочитати команди, але не виконувати їх. Цим можна скористатися для перевірки скрипту оболонок на синтаксичні помилки. Буде проігноровано у режимі інтерактивної оболонки. .TP 8 \fB\-o \fP\fIназва_параметра\fP \fIoption\-name\fP може бути одним з наступних: .RS .TP 8 \fBallexport\fP Те саме, що \fB\-a\fP. .TP 8 \fBbraceexpand\fP Те саме, що і \fB\-B\fP. .TP 8 \fBemacs\fP Скористатися інтерфейсом редагування рядка команди у стилі emacs. Такий режим буде типово увімкнено для інтерактивної оболонки, якщо оболонку не було запущено із параметром \fB\-\-noediting\fP. Це також стосується режиму редагування, який буде використано для \fBread \-e\fP. .TP 8 \fBerrexit\fP Те саме, що і \fB\-e\fP. .TP 8 \fBerrtrace\fP Те саме, що і \fB\-E\fP. .TP 8 \fBfunctrace\fP Те саме, що і \fB\-T\fP. .TP 8 \fBhashall\fP Те саме, що і \fB\-h\fP. .TP 8 \fBhistexpand\fP Те саме, що і \fB\-H\fP. .TP 8 \fBhistory\fP Увімкнути журнал команд, як описано .ie \n(zZ=1 in \fIbash\fP(1) .el above у розділі .SM \fBЖУРНАЛ\fP. Цей параметр типово увімкнено в інтерактивних оболонках. .TP 8 \fBignoreeof\fP Результат буде таким, наче використано команду оболонки .QN IGNOREEOF=10 виконано (див. \fBShell Variables\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP 8 \fBkeyword\fP Те саме, що і \fB\-k\fP. .TP 8 \fBmonitor\fP Те саме, що і \fB\-m\fP. .TP 8 \fBnoclobber\fP Те саме, що і \fB\-C\fP. .TP 8 \fBnoexec\fP Те саме, що і \fB\-n\fP. .TP 8 \fBnoglob\fP Те саме, що і \fB\-f\fP. .TP 8 \fBnolog\fP Наразі ігнорується. .TP 8 \fBnotify\fP Те саме, що і \fB\-b\fP. .TP 8 \fBnounset\fP Те саме, що і \fB\-u\fP. .TP 8 \fBonecmd\fP Те саме, що і \fB\-t\fP. .TP 8 \fBphysical\fP Те саме, що і \fB\-P\fP. .TP 8 \fBpipefail\fP Якщо встановлено, значення, що повертає конвеєр, є значенням останньої (крайньої правої) команди для виходу з ненульовим статусом або нулем, якщо всі команди в конвеєрі завершились успішно. Цей параметр вимкнено за замовчуванням. .TP 8 \fBposix\fP Увімкнути режим posix; змінити поведінку \fBbash\fP там, де типові дії відрізняються від стандарту POSIX так, щоб відповідати стандарту .SM POSIX . Див. розділ .SM \fBТАКОЖ ПЕРЕГЛЯНЬТЕ\fP .ie \n(zZ=1 in \fIbash\fP(1) .el below , де наведено посилання на документ із подробицями щодо того, як режим posix впливає на поведінку bash. .TP 8 \fBprivileged\fP Те саме, що і \fB\-p\fP. .TP 8 \fBverbose\fP Те саме, що і \fB\-v\fP. .TP 8 \fBvi\fP Скористатися інтерфейсом редактора командного рядка у стилі vi. Також стосується інтерфейсу редагування, який використовується для \fBread \-e\fP. .TP 8 \fBxtrace\fP Те саме, що і \fB\-x\fP. .PP Якщо \fB\-o\fP вказано без \fIназва_параметра\fP, \fBset\fP виводить значення поточних параметрів оболонки. Якщо вказано \fB+o\fP без \fIназва_параметра\fP, до стандартного виведення \fBset\fP буде виведено послідовність команд \fBset\fP для відтворення поточних значень параметрів. .RE .TP 8 \fB\-p\fP Увімкнути \fIпривілейований\fP режим. У цьому режимі оболонка не читає .SM \fB$ENV\fP і .SM \fB$BASH_ENV\fP, функції оболонки не успадковуватимуть середовище, а змінні .SM \fBSHELLOPTS\fP, .SM \fBBASHOPTS\fP, .SM \fBCDPATH\fP і .SM \fBGLOBIGNORE\fP, якщо вони є у середовищі, буде проігноровано. Якщо оболонку буде запущено від ідентифікатора ефективного користувача (групи), який не збігається із ідентифікатор справжнього користувача (групи) і не вказано параметр \fB\-p\fP, ідентифікатор користувача буде змінено на ідентифікатор справжнього користувача, і ці дії буде виконано для ідентифікатора справжнього користувача. Якщо під час запуску вказано параметр \fB\-p\fP, скидання ідентифікатор ефективного користувача не відбуватиметься. Вимикання цього параметра призведе до того, що ідентифікатори ефективного користувача і групи буде встановлено за значеннями ідентифікаторів справжнього користувача і групи. .TP 8 \fB\-r\fP Увімкнути обмежений режим оболонки. Встановлення цього параметра не можна скасувати після того, як його було встановлено. .TP 8 \fB\-t\fP Вийти після прочитання й виконання однієї команди. .TP 8 \fB\-u\fP Вважати наявність змінних і параметрів, окрім особливих параметрів .Q @ і .Q * , або змінних\-масивів із підписами .Q @ або .Q * , помилкою при виконанні розгортання параметрів. Якщо буде зроблено спробу розгорнути змінну або параметр без встановленого значення, оболонка виведе повідомлення про помилку і, якщо вона працює не в інтерактивному режимі, завершить роботу із ненульовим станом виходу. .TP 8 \fB\-v\fP Друкувати входові рядки оболонки під час виконання. .TP 8 \fB\-x\fP Після розгортання усіх \fIпростих команд\fP, команди \fBfor\fP, команди \fBcase\fP, команди \fBselect\fP та арифметичної команди \fBfor\fP вивести розгорнуте значення .SM \fBPS4\fP, потім команду і її розгорнуті аргументи або пов'язаний список слів до стандартного призначення помилок. .TP 8 \fB\-B\fP Оболонка виконує розкриття фігурних дужок (див. \fBBrace Expansion\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Типово увімкнено. .TP 8 \fB\-C\fP Якщо встановлено, \fBbash\fP не перезаписуватиме наявний файл, якщо використано оператори переспрямовування \fB>\fP, \fB>&\fP та \fB<>\fP. За допомогою оператора переспрямовування \fB>|\fP замість \fB>\fP можна перевизначити цю поведінку і створити файл виведення у примусовому режимі. .TP 8 \fB\-E\fP Якщо встановлено, будь\-які пастки на \fBERR\fP буде успадковано функціями оболонки, заміною команд та командами, які виконують у середовищі підоболонок. У таких випадках, за звичних умов, пастка \fBERR\fP не успадковується. .TP 8 \fB\-H\fP Увімкнути підставлення за журналом у стилі \fB!\fP. Цей параметр буде типово використано, якщо оболонка є інтерактивною. .TP 8 \fB\-P\fP Якщо встановлено, оболонка не розв’язує символьних посилань під час виконання таких команд, як \fBcd\fP, які змінюють поточний робочий каталог. Натомість вона використовує фізичну структуру каталогів. Типово, \fBbash\fP, під час виконання команд, які змінюють поточний каталог, дотримується логічного ланцюжка каталогів. .TP 8 \fB\-T\fP Якщо встановлено, будь\-які пастки на \fBDEBUG\fP і \fBRETURN\fP буде успадковано функціями оболонки, заміною команд та командами, які виконують у середовищі підоболонок. У таких випадках, за звичних умов, пастки \fBDEBUG\fP і \fBRETURN\fP не успадковуються. .TP 8 \fB\-\-\fP Якщо за цим параметром не вказано аргументів, значення позиційних параметрів буде скасовано. Якщо аргументи вказано, позиційним параметрам буде надано значення за \fIаргумент\fPами, навіть якщо деякі з них починатимуться з \fB\-\fP. .TP 8 \fB\-\fP Сигналізує про закінчення параметрів і призначає решту \fIаргументів\fP позиційним параметрам. Параметри \fB\-x\fP і \fB\-v\fP вимикаються. Якщо \fIаргументів\fP немає, позиційні параметри не змінюються. .PD .PP Типово параметри вимкнено, якщо не вказано інше. Використання + замість \- призводить до вимкнення цих параметрів. Параметри також можна вказати як аргументи для виклику оболонки. Поточний набір параметрів можна знайти в \fB$\-\fP. Стан повернення завжди нульовий, якщо не зустрічається недійсний параметр. .RE .TP \fBshift\fP [\fIn\fP] Позиційні параметри з \fIn\fP+1 .\|.\|.\& перейменовуються на \fB$1\fP \fB.\|.\|..\fP Параметри, представлені числами від \fB$#\fP вниз до \fB$#\fP\-\fIn\fP+1 втрачають значення. \fIn\fP має бути невід’ємним числом, меншим або рівним \fB$#\fP. Якщо \fIn\fP дорівнює 0, параметрине змінюються. Якщо \fIn\fP не задано, воно вважається рівним 1. Якщо \fIn\fP більше від \fB$#\fP, позиційні параметри не змінюються. Якщо \fIn\fP більше від \fB$#\fP або менше від нуля, повертається стан більший від нуля; в іншому випадку \- 0. .TP \fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fIназва_параметра\fP .\|.\|.] Перемикає значення параметрів, які керують необов’язковою поведінкою оболонки. Налаштування можуть бути перерахованими нижче, або, якщо використовується параметр \fB\-o\fP, доступні з параметром \fB\-o\fP вбудованої команди \fBset\fP. .IP Без параметрів або з параметром \fB\-p\fP, виводиться список усіх параметрів, які можна налаштувати, із зазначенням того, чи встановлено кожен із них; якщо задано будь\-які \fIназви параметрів\fP, вивід обмежується цими параметрами. Параметр \fB\-p\fP призводить до виведення у формі, яку можна повторно використати як вхідні дані. .IP Інші параметри мають таке значення: .RS .PD 0 .TP \fB\-s\fP Увімкнути (встановити) кожен \fIoptname\fP. .TP \fB\-u\fP Вимкнути (скинути) кожен \fIoptname\fP. .TP \fB\-q\fP Пригнічує звичайне виведення (тихий режим); стан повернення вказує, встановлено чи ні \fIoptname\fP. Якщо для \fIoptname\fP передано багато аргументів із \fB\-q\fP, якщо всі \fIoptnames\fP, увімкнено, повертається стан нуль; в іншому випадку \- відмінний від нуля. .TP \fB\-o\fP Обмежує значення \fIназви_параметра\fP тими назвами, які було визначено для параметра \fB\-o\fP вбудованої команди \fBset\fP. .PD .PP Якщо \fB\-s\fP або \fB\-u\fP використано без аргументів \fIoptname\fP, \fBshopt\fP показує лише ті параметри, які встановлено або вимкнено відповідно. Якщо не зазначено інше, то параметри \fBshopt\fP типово вимкнено (не встановлено). .PP Стан повернення при переліку параметрів дорівнює нулю, якщо всі \fIoptnames\fP увімкнено, в іншому випадку \- відмінний від нуля. Під час встановлення або скасування параметрів статус повернення дорівнює нулю, крім випадку, коли \fIoptname\fP не є дійсним параметром оболонки. .PP Список параметрів \fBshopt\fP: .PP .PD 0 .TP 8 \fBarray_expand_once\fP Якщо встановлено, оболонка пригнічує багаторазове обчислення індексів асоціативного індексованого масиву протягом обчислення значення арифметичного виразу, під час виконання вбудованих програм, які можуть виконувати присвоювання змінних, і під час виконання вбудованих модулів, які виконують розіменування масивів. .TP 8 \fBassoc_expand_once\fP Застаріла; синонім \fBarray_expand_once\fP. .TP 8 \fBautocd\fP Якщо встановлено, назва команди, яка є назвою каталогу, виконується так, ніби вона є аргументом для команди \fBcd\fP. Цей параметр використовують лише інтерактивні оболонки. .TP 8 \fBbash_source_fullpath\fP Якщо встановлено, назви файлів, додані до змінної\-масиву \fBBASH_SOURCE\fP, перетворюються на повні шляхи (див. \fBЗмінні оболонки\fP вище). .TP 8 \fBcdable_vars\fP Якщо встановлено, аргумент вбудованої команди \fBcd\fP, який не є каталогом, вважається назвою змінної, значенням якої є каталог, до якого слід перейти. .TP 8 \fBcdspell\fP Якщо встановлено, команда \fBcd\fP спробує виправити незначні помилки в написанні компонента каталогу в команді \fBcd\fP буде виправлено. До незначних помилок належать переставлені символи, пропущені символи та зайві символи. Якщо \fBcd\fP виправлятиме назу каталогу, програма виведе правильну назву файла і продовжить виконання команди. Цей параметр використовується лише інтерактивними оболонками. .TP 8 \fBcheckhash\fP Якщо встановлено, \fBbash\fP перевіряє, чи існує команда, знайдена в геш\-таблиці, перш ніж спробувати її виконати. Якщо гешована команда більше не існує, \fBbash\fP виконує звичайний пошук шляху. .TP 8 \fBcheckjobs\fP Якщо встановлено, \fBbash\fP, перед виходом з інтерактивної оболонки, перелічує стани будь\-яких зупинених і виконуваних завдань. Якщо виконуються якісь завдання, \fBbash\fP відкладе вихід до наступної спроби виходу без відповідної команди (див. вище .SM \fBКЕРУВАННЯ ЗАВДАННЯМИ\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Оболонка завжди відкладає вихід, якщо якісь завдання зупинено. .TP 8 \fBcheckwinsize\fP Якщо встановлено, \fBbash\fP після кожної зовнішньої (не вбудованої) команди перевіряє розмір вікна та, якщо необхідно, оновлює значення .SM \fBLINES\fP і .SM \fBCOLUMNS\fP з використанням дескриптора файла, який пов'язано із стандартною помилкою, якщо це термінал. Типово цей параметр увімкнено. .TP 8 \fBcmdhist\fP Якщо встановлено, \fBbash\fP намагається зберегти всі рядки багаторядкової команди в одному записі журналу. Це дозволяє легко повторно редагувати багаторядкові команди. Цей параметр типово увімкнено, але діє він лише в тому випадку, якщо ввімкнено історію команд, як описано .ie \n(zZ=1 in \fIbash\fP(1) .el above у розділі .SM \fBЖУРНАЛ\fP. .PD 0 .TP 8 \fBcompat31\fP .TP 8 \fBcompat32\fP .TP 8 \fBcompat40\fP .TP 8 \fBcompat41\fP .TP 8 \fBcompat42\fP .TP 8 \fBcompat43\fP .TP 8 \fBcompat44\fP .PD Ці аспекти контролю режиму сумісності оболонки (див. .SM \fBSHELL COMPATIBILITY MODE\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el below). .PD 0 .TP 8 \fBcomplete_fullquote\fP Якщо встановлено, \fBbash\fP під час завершення бере в лапки всі метасимволи оболонки в назвах файлів і каталогів. Якщо не встановлено, \fBbash\fP видаляє метасимволи, такі як знак долара, з набору символів, які братимуться в лапки в заповнених назвах файлів, коли ці метасимволи з’являться в посиланнях на змінні оболонки в словах, які потрібно заповнити. Це означає, що знаки долара в назвах змінних, які розгортаються до каталогів, не будуть у лапках; однак будь\-які знаки долара, що з'являються в назвах файлів, також не будуть у лапках. Це активне лише тоді, коли bash використовує зворотні похилі риски для обмеження повних назв файлів. Цю змінну типово встановлено, що є типовою поведінкою bash у версіях до 4.2. .TP 8 \fBdirexpand\fP Якщо встановлено, \fBbash\fP, під час доповнення назв файлів, замінює назви каталогів результатами розширення слів. Це змінює вміст буфера редагування \fBreadline\fP. Якщо ні, \fBbash\fP намагається зберегти те, що ввів користувач. .TP 8 \fBdirspell\fP Якщо встановлено, \fBbash\fP намагається виправити помилки в назвах каталогів під час доповнення слів, якщо каталогу зі введеною назвою не існує. .TP 8 \fBdotglob\fP Якщо встановлено, \fBbash\fP включає в результати розгортання шляхів назви файлів, які починаються з .Q .\& in the results of pathname expansion. The filenames .FN .\& and .FN ..\& must always be matched explicitly, even if \fBdotglob\fP is set. .TP 8 \fBexecfail\fP Якщо встановлено, неінтерактивна оболонка не закриється, якщо вона не зможе виконати файл, зазначений як аргумент для вбудованої команди \fBexec\fP. Інтерактивна оболонка не закриється в разі невдачі \fBexec\fP. .TP 8 \fBexpand_aliases\fP Якщо встановлено, альтернативи буде розгорнуто так, як це описано .ie \n(zZ=1 in \fIbash\fP(1) .el above у розділі .SM \fBАЛЬТЕРНАТИВИ\fP. Типово цей параметр увімкнено для інтерактивних оболонок. .TP 8 \fBextdebug\fP Якщо встановлено на моменти виклику оболонки або у файлі запуску оболонки, налаштувати виконання профілю діагностики до запуску оболонки так само, як у параметрі \fB\-\-debugger\fP. Якщо встановлено після виклику оболонки, буде увімкнено таку поведінку для використання засобів діагностики: .RS .TP \fB1.\fP Параметр \fB\-F\fP вбудованої команди \fBdeclare\fP призводить до виведення назви файла початкового коду та номера рядка для усіх функцій, назви яких передано як аргумент. .TP \fB2.\fP Якщо команда яку запущено пасткою \fBDEBUG\fP повертає ненульове значення, наступну команду буде пропущено і не виконано. .TP \fB3.\fP Якщо команда, яку віддано пасткою \fBDEBUG\fP, повертає значення 2, і оболонка виконується у підпрограмі (функції оболонки або скрипті оболонки, які запущено вбудованими командами \fB.\fP і \fBsource\fP), оболонка імітує виклик \fBreturn\fP. .TP \fB4.\fP .SM \fBBASH_ARGC\fP і .SM \fBBASH_ARGV\fP буде оновлено так, як це описано у їхніх описах .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP \fB5.\fP Буде увімкнено трасування функцій: заміна команд, функції оболонки та підоболонки, які викликає за допомогою \fB(\fP \fIкоманда\fP \fB)\fP успадкують пастки \fBDEBUG\fP і \fBRETURN\fP. .TP \fB6.\fP Буде увімкнено трасування помилок: заміна команд, функції оболонки та підоболонки, які викликає за допомогою \fB(\fP \fIкоманда\fP \fB)\fP успадкують пастку \fBERR\fP. .RE .TP 8 \fBextglob\fP Якщо встановлено, будуть увімкнені функції розширеного зіставлення шаблонів, описані .ie \n(zZ=1 in \fIbash\fP(1) .el above у розділі \fBРозгортання шляхів\fP. .TP 8 \fBextquote\fP Якщо встановлено, рядки беруться в лапки \fB$\fP\*'\fIрядок\fP\*' and \fB$\fP\*"\fIрядок\fP\*" у межах розширень \fB${\fP\fIпараметрів\fP\fB}\fP, узятих у подвійні лапки. Цей параметр типово увімкнено. .TP 8 \fBfailglob\fP Якщо встановлено, шаблони, які не відповідають назвам файлів під час розгортання шляху, призводять до помилки розгортання. .TP 8 \fBforce_fignore\fP Якщо встановлено, суфікси, визначені змінною оболонки .SM \fBFIGNORE\fP, призводять до нехтування слів під час доповнювання слів, навіть якщо нехтувані слова є єдиними можливими доповненнями. Див. підзаголовок \fBЗмінні оболонки\fP .ie \n(zZ=1 in \fIbash\fP(1) .el above , де наведено опис .SM \fBFIGNORE\fP. Цей параметр типово увімкнено. .TP 8 \fBglobasciiranges\fP Якщо встановлено, вирази діапазону, які використовуються у виразах відповідності шаблону з дужками (див. .SM \fBВідповідність за взірцем\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) під час порівнянь поводяться як у традиційній мові C. Тобто при встановленні відповідності послідовність зіставлення поточного мовного стандарту не буде враховано, тому \fBb\fP не буде зіставлятися між \fBA\fP і \fBB\fP, а символи ASCII верхнього та нижнього регістру будуть порівнюватися разом. .TP 8 \fBglobskipdots\fP If set, pathname expansion will never match the filenames .FN .\& and .FN ..\& , even if the pattern begins with a .Q .\& . Цей параметр типово увімкнено. .TP 8 \fBglobstar\fP Якщо встановлено, шаблон \fB**\fP, який використовується в контексті розгортання шляху, відповідає всім файлам і нулю або більше каталогів і підкаталогів. Якщо за шаблоном йде \fB/\fP, до уваги беруться лише каталоги та підкаталоги. .TP 8 \fBgnu_errfmt\fP Якщо встановлено, повідомлення про помилки оболонки записуються у стандартному форматі повідомлень про помилки GNU. .TP 8 \fBhistappend\fP Якщо встановлено, то список журналу, коли оболонка завершує роботу, додається до файлу, названого значенням змінної .SM \fBHISTFILE\fP, а не перезаписує його. .TP 8 \fBhistreedit\fP Якщо встановлено, і використовується \fBreadline\fP, користувачу надається можливість повторно відредагувати невдалe підстановку журналу. .TP 8 \fBhistverify\fP Якщо встановлено, і використовується \fBreadline\fP, результати підставлення журналу не відразу передаються до обробника оболонки. Замість цього отриманий рядок завантажується в буфер редагування \fBreadline\fP, що дозволяє вносити подальші зміни. .TP 8 \fBhostcomplete\fP Якщо встановлено, і використовується \fBreadline\fP, \fBbash\fP спробує доповнити назву вузла, коли доповнюється слово, що містить \fB@\fP (див. \fBДоповнення\fP у розділі .SM \fBREADLINE\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Типово увімкнено. .TP 8 \fBhuponexit\fP Якщо встановлено, то при завершенні роботи інтерактивної оболонки для входу \fBbash\fP надсилатиме всім завданням .SM \fBSIGHUP\fP. .TP 8 \fBinherit_errexit\fP Якщо встановлено, заміна команд успадкує значення параметра \fBerrexit\fP, замість скасування встановлення для нього значення у середовищі підоболонки. Цей параметр буде увімкнено, якщо увімкнено режим posix. .TP 8 \fBinteractive_comments\fP В інтерактивній оболонці слово, що починається на \fB#\fP, та решту символів у цьому рядку буде знехтувано, як і в неінтерактивній оболонці (див. .SM \fBКОМЕНТАРІ\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Цей параметр типово увімкнено. .TP 8 \fBlastpipe\fP Якщо встановлено і керування завданнями неактивне, оболонка запускає останню команду конвеєра, який не виконується у фоновому режимі в поточному середовищі оболонки. .TP 8 \fBlithist\fP Якщо встановлено, а параметр \fBcmdhist\fP увімкнено, багаторядкові команди зберігаються в журналу з вбудованими новими рядками, а не з розділенням крапки з комою, де це можливо. .TP 8 \fBlocalvar_inherit\fP Якщо встановлено, локальні змінні успадковують значення та атрибути однойменної змінної, яка існує в попередній області дії до того, як буде присвоєно нове значення. Атрибут nameref не успадковується. .TP 8 \fBlocalvar_unset\fP Якщо встановлено, виклик \fBunset\fP для локальних змінних у попередніх областях видимості функції позначає їх, тому наступні пошуки знайдуть їх не встановленими до виходу з цієї функції. Це ідентично скасуванню встановлення локальних змінних у поточній області видимості функції. .TP 8 \fBlogin_shell\fP Оболонка встановлює цей параметр, якщо вона запущена як оболонка для входу (див. .SM \fBВИКЛИК\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Значення не можна змінювати. .TP 8 \fBmailwarn\fP Якщо встановлено, і файл, який \fBbash\fP перевіряє на наявність пошти, був доступним від моменту останньої перевірки, \fBbash\fP виведе повідомлення .Q "The mail in \fImailfile\fP has been read" . .TP 8 \fBno_empty_cmd_completion\fP Якщо встановлено, і використовується \fBreadline\fP, \fBbash\fP не намагатиметься шукати можливе доповнення в .SM \fBPATH\fP, якщо спроба доповнення буде здійснюватися в порожньому рядку. .TP 8 \fBnocaseglob\fP Якщо встановлено, \fBbash\fP встановлюватиме відповідність назв файлів із врахуванням регістру при розгортанні шляхів (див. \fBРозгортання шляхів\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). .TP 8 \fBnocasematch\fP Якщо встановлено, \fBbash\fP встановлюватиме відповідність взірців без врахування регістру символів при виконанні команд\-умов \fBcase\fP та \fB[[\fP, при виконанні розгортання слів із заміною за взірцем або при фільтрування можливих доповнень при програмованому доповненні. .TP 8 \fBnoexpand_translation\fP Якщо встановлено, \fBbash\fP братиме трансльований результат нейтралізації \fB$\*"\fP.\|.\|.\&\fB\*"\fP у одинарні лапки замість подвійних. Якщо рядок не буде трансльовано, цей параметр ні на що не впливатиме. .TP 8 \fBnullglob\fP Якщо встановлено, розгортання взірців шляху, які не відповідають жодному файлу (див. \fBРозгортання шляхів\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) не буде розгорнуто і буде вилучено, замість того, щоб розгортатися у себе. .TP 8 \fBpatsub_replacement\fP Якщо встановлено, \fBbash\fP не розгортатиме \fB&\fP у рядку\-заміннику при підставлянні за взірцем до тексту, який відповідає взірцю, як це описано у розділі \fBРозгортання параметрів\fP .ie \n(zZ=1 in \fIbash\fP(1). .el above. Цей параметр типово увімкнено. .TP 8 \fBprogcomp\fP Якщо встановлено, буде увімкнено можливості програмованого доповнення (див. \fBПрограмоване доповнення\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Цей параметр типово увімкнено. .TP 8 \fBprogcomp_alias\fP Якщо встановлено, буде увімкнено програмоване доповнення, \fBbash\fP оброблятиме назву команди, яка не має жодних варіантів доповнення, як можливу альтернативу і виконуватиме розгортання альтернатив. Якщо у команди є альтернатива, \fBbash\fP спробує виконати програмоване доповнення з використанням слова команди, яке є результатом розгортання альтернативи. .TP 8 \fBpromptvars\fP Якщо встановлено, рядки запиту підлягатимуть розгортанню параметрів, заміні команд, арифметичним обчисленням та вилученню нейтралізації після розгортання, яке описано у розділі .SM \fBЗАПИТИ\fP .ie \n(zZ=1 in \fIbash\fP(1). .el above. Цей параметр типово увімкнено. .TP 8 \fBrestricted_shell\fP Оболонка встановлює цей параметр, якщо її запущено у обмеженому режимі (див. .SM \fBОБМЕЖЕНА ОБОЛОНКА\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el below). Значення параметра змінювати не можна. Значення параметра не буде повторно встановлено під час виконання файлів запуску, що уможливлює визначення у файлах запуску того, чи запущено оболонку в обмеженому режимі. .TP 8 \fBshift_verbose\fP Якщо встановлено, вбудована команда \fBshift\fP виводитиме повідомлення про помилку, якщо лічильник зсуву перевищуватиме за значенням кількість позиційних параметрів. .TP 8 \fBsourcepath\fP Якщо встановлено, вбудована команда \fB.\fP (\fBsource\fP) використовуватиме значення змінної .SM \fBPATH\fP для пошуку каталогу, який містить файл, переданий як аргумент, якщо не вказано параметр \fB\-p\fP. Типово, цей параметр увімкнено. .TP 8 \fBvarredir_close\fP Якщо встановлено, оболонка автоматично закриватиме дескриптори файлів, значення яких визначено за допомогою синтаксису переспрямування \fI{назва\-змінної}\fP (див. .SM \fBПЕРЕСПРЯМУВАННЯ\fP .ie \n(zZ=1 in \fIbash\fP(1)) .el above) замість полишення їх відкритими при завершенні роботи команди. .TP 8 \fBxpg_echo\fP Якщо встановлено, вбудована команда \fBecho\fP типово розгортатиме послідовності символів із екрануванням символом зворотної похилої риски. Якщо також використано параметр оболонки \fBposix\fP, \fBecho\fP не оброблятиме жодних параметрів. .RE .PD .TP \fBsuspend\fP [\fB\-f\fP] Призупинити виконання цієї оболонки, аж доки вона не отримає сигналу .SM \fBSIGCONT\fP. Роботу оболонки входу до системи або оболонки без увімкненого керування завданнями не можна призупиняти; для перевизначення цієї поведінки і примусового призупинення роботи скористайтеся параметром \fB\-f\fP. Буде повернуто стан 0, якщо оболонка не є оболонкою входу до системи або не увімкнено керування завданнями і не вказано параметр \fB\-f\fP. .TP \fBtest\fP \fIвираз\fP .PD 0 .TP \fB[\fP \fIвираз\fP \fB]\fP .PD Повернути стан 0 (істина) або 1 (хибність), залежно від обчисленого значення виразу умови \fIвираз\fP. Кожен оператор і операнд має бути окремим аргументом. Вирази складаються з основних елементів, які описано .ie \n(zZ=1 in \fIbash\fP(1) .el above у розділі .SM \fBУМОВНІ ВИРАЗИ\fP. \fBtest\fP не приймає ніяких параметрів, а також не приймає і ігнорує аргумент \fB\-\-\fP як позначку завершення параметрів. .IP Вирази можна поєднувати за допомогою зазначених нижче операторів. Оператори у списку вказано за пріоритетністю. Обчислення залежить від кількості аргументів. Див. нижче. Якщо аргументів п'ять або більше, \fBtest\fP використає пріоритетність операторів. .RS .PD 0 .TP \fB! \fP\fIвираз\fP Істина, якщо \fIвираз\fP є хибним. .TP \fB( \fP\fIвираз\fP\fB )\fP Повертає значення виразу \fIвираз\fP. Цим можна скористатися для перевизначення звичайної пріоритетності операторів. .TP \fIвираз\fP \-\fBa\fP \fIвираз2\fP Істина, якщо обидва, \fIвираз1\fP і \fIвираз2\fP, мають значення true. .TP \fIвираз1\fP \-\fBo\fP \fIвираз2\fP Істина, якщо \fIвираз1\fP або \fIвираз2\fP має значення true. .PD .PP \fBtest\fP і \fB[\fP обчислюють умовні виразу з використанням набору правил на основі кількості аргументів. .PP .PD 0 .TP 0 аргументів Вираз є хибним. .TP 1 аргумент Вираз є істинним тоді і лише тоді, коли аргумент не є порожнім. .TP 2 аргументи Якщо першим аргументом є \fB!\fP, вираз є істинним тоді і лише тоді, коли другий аргумент є порожнім. Якщо перший аргумент є одним із унарних умовних операторів зі списку у розділі .SM \fBУМОВНІ ВИРАЗИ\fP .ie \n(zZ=1 in \fIbash\fP(1) .el above , вираз є істинним, якщо обчислення унарного оператора дає значення «істина». Якщо першим аргументом не є коректний унарний умовний оператор, вираз буде хибним. .TP 3 аргументи Вказані нижче умови буде застосовано за порядком, який визначає для них список. Якщо другим аргументом буде один із двійкових операторів умов, список яких наведено у розділі .SM \fBУМОВНІ ВИРАЗИ\fP .ie \n(zZ=1 in \fIbash\fP(1) .el above , результатом обчислення виразу буде результат двійкової перевірки, операндами якої будуть перший і третій аргументи. Оператори \fB\-a\fP і \fB\-o\fP вважаються двійковими операторами, якщо у них три аргументи. Якщо першим аргументом є \fB!\fP, значенням буде заперечення двоаргументної перевірки, у якій використано другий і третій аргументи. Якщо першим аргументом є \fB(\fP, а третім — \fB)\fP, результатом буде результат одноаргументної перевірки другого аргументу. В усіх інших випадках результатом обчислення виразу буде «хибність». .TP 4 аргументи До порядку, у якому буде побудовано список, застосовують вказані нижче умовні оператори. Якщо першим аргументом є \fB!\fP, результат буде запереченням виразу, що складається з решти трьох аргументів. Якщо першим аргументом є \fB(\fP, а четвертим — \fB)\fP, результатом буде двоаргументна перевірка за другим і третім аргументами. В інших випадках буде виконано обробку і обчислення виразу відповідно до пріоритетності, яку використано у правилах з наведеного вище списку. .TP 5 або більше аргументів Вираз буде оброблено і обчислено відповідно до пріоритетності з використанням наведених вище правил. .PD .PP Коли оболонка працює у режимі POSIX, або якщо вираз є частиною команди \fB[[\fP, оператори \fB<\fP та \fB>\fP упорядковують за поточною локалізацією. Якщо оболонка не перебуває в режимі POSIX, команди \fBtest\fP і \fB[\fP впорядковують записи лексикографічно, використовуючи порядок ASCII. .PP Історично використаний спосіб обробки пріоритетів операторів з 4 або більше аргументами може призвести до неоднозначностей, коли зустрічаються рядки, що виглядають як основи. Стандарт .SM POSIX визнав застарілими основи \fB\-a\fP та \fB\-o\fP та вирази, які взято у дужки. Їх не слід використовувати у скриптах. Набагато надійніше обмежити виклики тестів однією основою та замінити використання \fB\-a\fP та \fB\-o\fP на оператори списку \fB&&\fP та \fB||\fP оболонки. .RE .TP \fBtimes\fP Вивести сукупний час використання процесора завданнями користувача і системи для оболонки і процесів, які було запущено оболонкою. Станом повернення є 0. .TP \fBtrap\fP [\fB\-lpP\fP] [[\fIдія\fP] \fIспецифікація_сигналу\fP .\|.\|.] \fIДія\fP – це команда, яка зчитується та виконується, коли оболонка отримує будь\-який із сигналів \fIспецифікація сигналу\fP. Якщо аргументу \fIдія\fP не вказано (і є один \fIсигспеч\fP) або \fB\-\fP, кожен вказаний \fIспецифікатор сигналу\fP скидається до значення, яке він мав під час запуску оболонки. Якщо \fIдія\fP – це нульовий рядок, сигнал, вказаний кожним \fIспецифікатором сигналу\fP, буде проігноровано оболонкою та командами, які вона викликає. .IP Якщо ніяких аргументів не передано, \fBtrap\fP показує дії, пов'язані з кожним перехопленим сигналом, як набір команд \fBtrap\fP, які можна повторно використовувати як вхідні дані оболонки для відновлення поточних позицій сигналів. Якщо надано \fB\-p\fP, а \fIдію\fP не вказано, тоді \fBtrap\fP покаже дії, пов'язані з кожним \fIспецифікатором сигналу\fP, або, якщо жодного не надано, для всіх перехоплених сигналів, як набір команд \fBtrap\fP, які можна повторно використовувати як вхідні дані оболонки для відновлення поточних позицій сигналів. Параметр \fB\-P\fP поводиться аналогічно, але показує лише дії, пов'язані з кожним аргументом \fIспецифікатор сигналу\fP. \fB\-P\fP вимагає принаймні одного аргументу \fIспецифікатор сигналу\fP. Параметри \fB\-P\fP або \fB\-p\fP можуть використовуватися у середовищі підоболонки (наприклад, підставляння команд) і, якщо вони використовуються до того, як \fBtrap\fP використовується для зміни обробки сигналу, показуватимуть стан перехоплень його батьківського об'єкта. .IP Параметр \fB\-l\fP виводить список назв сигналів та їхніх відповідних номерів. Кожен \fIспецифікатор сигналу\fP — це або назва сигналу, визначена у <\fIsignal.h\fP>, або номер сигналу. Для назв сигналів регістр символів не має значення, а префікс .SM \fBSIG\fP є необов'язковим. Якщо \fB\-l\fP надано без аргументів \fIспецифікатор сигналу\fP, програма виводить список дійсних назв сигналів. .IP Якщо \fIспецифікацією_сигналу\fP є .SM \fBEXIT\fP (0), при виході з оболонки буде виконано команду \fIдія\fP. Якщо значенням \fIспецифікації_сигналу\fP є .SM \fBDEBUG\fP, команду \fIдія\fP буде виконано перед кожною \fIпростою командою\fP, командою \fIfor\fP, командою \fIcase\fP, командою \fIselect\fP, арифметичною командою ((, умовною командою [[, арифметичною командою \fIfor\fP і перед першою командою, яку буде виконано у функції оболонки (див. .SM \fBГРАМАТИКА ОБОЛОНКИ\fP .ie \n(zZ=1 in \fIbash\fP(1)). .el above). Зверніться до опису параметра \fBextdebug\fP вбудованої команди \fBshopt\fP, .ie \n(zZ=1 in \fIbash\fP(1)) .el above) щоб дізнатися більше про його вплив на пастку \fBDEBUG\fP. Якщо значенням \fIспецифікація_сигналу\fP є .SM \fBRETURN\fP, команду \fIдія\fP буде виконано кожного разу, коли завершуватиме виконання функції оболонки або скрипту, який виконується із використанням вбудованих команд \fB.\fP і \fBsource\fP. .IP Якщо \fIспецифікацією_сигналу\fP є .SM \fBERR\fP, \fIдію\fP буде виконано кожного разу, коли конвеєр (який може складатися з однієї простої команди), список або складена команда повертає ненульовий стан виходу, відповідно до наведених нижче умов. Пастку .SM \fBERR\fP не буде виконано, якщо команда з помилкою є частиною списку команд, одразу за яким вказано зарезервоване слово \fBwhile\fP або \fBuntil\fP, частину перевірки в інструкції \fIif\fP, частину команди, яка виконується у списку \fB&&\fP або \fB||\fP, окрім команди за останнім \fB&&\fP або \fB||\fP, будь\-якою командою у конвеєрі, окрім останньої (відповідно до стану параметра оболонки \fBpipefail\fP), або якщо повернене командою значення заперечено за допомогою \fB!\fP. Це ті самі умови, які використовують для параметра \fBerrexit\fP (\fB\-e\fP). .IP Якщо командна оболонка не є інтерактивною, сигнали, знехтувані при вході в оболонку, не можна захопити у пастку або скинути. В інтерактивних оболонках дозволено ігнорування перехоплених сигналів при введенні. Перехоплені сигнали, які не нехтуються, скидаються до початкових значень у підоболонці або середовищі підоболонки, коли вона створюється. Стан повернення false, якщо будь\-який \fIsigspec\fP недійсний; інакше \fBtrap\fP повертає true. .TP \fBtrue\fP Ніяких наслідків, повертає стан 0. .TP \fBtype\fP [\fB\-aftpP\fP] \fIназва\fP [\fIназва\fP .\|.\|.] Вказує на те, як буде оброблено кожну \fIназву\fP, якщо її використано як назву команди. .IP Якщо використовується параметр \fB\-t\fP, \fBtype\fP друкує один із рядків \fIalias\fP, \fIkeyword\fP, \fIfunction\fP, \fIbuiltin\fP або \fIfile\fP, якщо \fIname\fP є псевдонімом, зарезервованим словом оболонки, функцією, вбудованою програмою або виконуваним файлом відповідно. Якщо \fIназву\fP не знайдено, то \fBtype\fP нічого не виводитиме і повертає ненульовий стан виходу. .IP Якщо буде використано параметр \fB\-p\fP, \fBtype\fP або повертає назву виконуваного файла, який буде знайдено пошуком у \fB$PATH\fP \fIназви\fP, або нічого, якщо .Q "type \-t name" не повертає \fIфайл\fP. Параметр \fB\-P\fP змушує шукати .SM \fBPATH\fP для кожної \fIназви\fP, навіть якщо .Q "type \-t name" не повертає \fIфайл\fP. Якщо у таблиці хешованих команд є \fIназва\fP, \fB\-p\fP і \fB\-P\fP виведуть хешоване значення, яке не обов'язково є файлом, що з'являється першим у .SM \fBPATH\fP. .IP Якщо використано параметр \fB\-a\fP, \fBtype\fP виводить усі місця, що містять команду з назвою \fIназва\fP. Це, зокрема, включає псевдоніми, зарезервовані слова, функції та вбудовані модулі, але можна надати параметри пошуку шляху (\fB\-p\fP та \fB\-P\fP), щоб обмежити виведення виконуваними файлами. \fBtype\fP не звертається до таблиці хешованих команд під час використання \fB\-a\fP з \fB\-p\fP та виконує лише пошук .SM \fBPATH\fP для \fIназви\fP. .IP Параметр \fB\-f\fP придушує пошук функцій оболонки, як і вбудована \fBcommand\fP. \fBtype\fP повертає true, якщо знайдено всі аргументи, false, якщо жодного не знайдено. .TP \fBulimit\fP [\fB\-HS\fP] \fB\-a\fP .PD 0 .TP \fBulimit\fP [\fB\-HS\fP] [\fB\-bcdefiklmnpqrstuvxPRT\fP [\fIобмеження\fP]] .PD Забезпечує керування ресурсами, доступними для оболонки, і процесами, які вона запустила, в системах, які дозволяють таке керування. .IP Параметри \fB\-H\fP і \fB\-S\fP визначають, що для даного ресурсу встановлено жорстку або м’яку межу. Після встановлення жорсткої межі, її не може збільшити користувач без права root; м'яку межу можна збільшити до значення жорсткої межі. Якщо не вказано ні \fB\-H\fP, ні \fB\-S\fP, встановлюються як м’яка, так і жорстка межі. .IP Значенням \fIмежа\fP може бути число в одиницях, зазначене для ресурсу, або одне зі спеціальних значень \fBhard\fP, \fBsoft\fP або \fBunlimited\fP, які означають поточну жорстку межу, поточну м’яку межу та безліміт відповідно. Якщо значення \fIмежа\fP опущено, \fBulimit\fP виведен поточне значення м’якої межі для ресурсу, якщо не вказано параметр \fB\-H\fP. Якщо вказано більше одного ресурсу, перед значенням, якщо доречно, друкуються назва межі й одиниця вимірювання. Інші варіанти інтерпретуються так: .RS .PD 0 .TP \fB\-a\fP Вивести звіт щодо усіх поточних обмежень; без встановлення будь\-яких обмежень. .TP \fB\-b\fP Максимальний розмір буфера сокета. .TP \fB\-c\fP Максимальний розмір створених файлів ядра. .TP \fB\-d\fP Максимальний розмір сегмента даних процесу. .TP \fB\-e\fP Максимальна пріоритетність планування ( .Q nice ). .TP \fB\-f\fP Максимальний розмір файлів, які записано оболонкою та її дочірніми процесами. .TP \fB\-i\fP Максимальна кількість сигналів у черзі. .TP \fB\-k\fP Максимальна кількість k\-черг, які можна розмістити у пам'яті. .TP \fB\-l\fP Максимальний розмір, який може бути заблоковано у пам'яті. .TP \fB\-m\fP Максимальний розмір резидентного набору (у багатьох системах це обмеження не береться до уваги). .TP \fB\-n\fP Максимальна кількість відкритих дескрипторів файлів (більшість систем не дозволяють встановлення цього значення). .TP \fB\-p\fP Розмір каналу у 512\-байтових блоках (може бути не встановлено). .TP \fB\-q\fP Максимальна кількість байтів у чергах повідомлень .SM POSIX . .TP \fB\-r\fP Максимальна пріоритетність планування у режимі реального часу. .TP \fB\-s\fP Максимальний розмір стека. .TP \fB\-t\fP Максимальний обсяг часу процесора у секундах. .TP \fB\-u\fP Максимальна кількість процесів, які доступні для одного користувача. .TP \fB\-v\fP Максимальний об'єм віртуальної пам'яті, яка доступна для оболонки, і, у деяких системах, для її дочірніх процесів. .TP \fB\-x\fP Максимальна кількість блокувань файлів. .TP \fB\-P\fP Максимальна кількість псевдотерміналів. .TP \fB\-R\fP Максимальний час, протягом якого процес реального часу може виконуватися без блокування, у мікросекундах. .TP \fB\-T\fP Максимальна кількість потоків обробки. .PD .PP Якщо вказано \fIобмеження\fP і не використано параметр \fB\-a\fP, \fIобмеження\fP стане новим значенням вказаного ресурсу. Якщо не вказано жодного параметра, буде використано параметр \fB\-f\fP. .PP Кроком зростання значень є 1024 байтів, окрім варіанта з \fB\-t\fP, для якого кроком є секунди; \fB\-R\fP, для якого кроком є мікросекунди; \fB\-p\fP, для якого одиницями є блоки у 512 байтів; \fB\-P\fP, \fB\-T\fP, \fB\-b\fP, \fB\-k\fP, \fB\-n\fP і \fB\-u\fP, для яких значення є безрозмірними; та у режиму posix \fB\-c\fP і \fB\-f\fP, для яких кроком зростання є 512 байтів. Повернутим станом є 0, якщо немає некоректних параметрів або аргументів і встановлення нового обмеження виконано без помилок. .RE .TP \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fIрежим\fP] Встановити для маски створення файлів користувачем значення \fIрежим\fP. Якщо \fIрежим\fP починається з цифри, він вважатиметься записом у вісімковій системі числення; в усіх інших випадках, він вважатиметься записом символічної маски режиму, подібним до того, який приймає команда \fIchmod\fP(1). Якщо \fIрежим\fP не вказано, \fBumask\fP буде виведено поточне значення маски. Використання параметра \fB\-S\fP без аргументу \fIрежим\fP призведе до виведення маски у символічній формі. Типовим режимом виведення є режим вісімкових чисел. Якщо вказано параметр \fB\-p\fP і не вказано \fIрежим\fP, дані буде виведено у форматі, яким можна скористатися як вхідними даними. Станом повернення буде нуль, якщо режим було змінено успішно або якщо не було вказано аргументу \fIрежим\fP. В усіх інших випадках буде повернуто ненульовий стан виходу. .TP \fBunalias\fP [\-\fBa\fP] [\fIназва\fP .\|.\|.] Вилучити усі назви \fIназва\fP зі списку визначених альтернатив. Якщо вказано \fB\-a\fP, буде вилучено усі визначення альтернатив. Повернутим значенням буде «істина», якщо вказана \fIназва\fP є визначеною альтернативою. .TP \fBunset\fP [\-\fBfv\fP] [\-\fBn\fP] [\fIname\fP .\|.\|.] Для кожної \fIназви\fP вилучити відповідну змінну або функцію. Якщо вказано параметр \fB\-v\fP, кожна \fIназва\fP є посиланням на змінну оболонки, і цю змінну буде вилучено. Якщо вказано параметр \fB\-f\fP, усі \fIназви\fP є посиланнями на функцію оболонки, ці визначення функцій буде вилучено. Якщо вказано параметр \fB\-n\fP і \fIназва\fP є змінною із атрибутом \fInameref\fP, буде скасовано встановлення значення \fIназви\fP, а не змінної, на яку вона посилається. \fB\-n\fP не спрацює, якщо вказано параметр \fB\-f\fP. Значення призначених лише для читання змінних у такий спосіб скидати не можна. При вилученні змінних або функцій, їх також буде вилучено з середовища, що передається наступним командам. Якщо не вказано жодних параметрів, усі \fIназви\fP посилаються на змінні. Якщо не буде виявлено змінної із відповідною назвою, наступним командам буде скасовано встановлення значення для функції із відповідною назвою, якщо така існує. Встановлення значень для деяких змінних оболонки не можна скасувати. Якщо скасовано встановлення значення для змінних .SM \fBBASH_ALIASES\fP, .SM \fBBASH_ARGV0\fP, .SM \fBBASH_CMDS\fP, .SM \fBBASH_COMMAND\fP, .SM \fBBASH_SUBSHELL\fP, .SM \fBBASHPID\fP, .SM \fBCOMP_WORDBREAKS\fP, .SM \fBDIRSTACK\fP, .SM \fBEPOCHREALTIME\fP, .SM \fBEPOCHSECONDS\fP, .SM \fBFUNCNAME\fP, .SM \fBGROUPS\fP, .SM \fBHISTCMD\fP, .SM \fBLINENO\fP, .SM \fBRANDOM\fP, .SM \fBSECONDS\fP або .SM \fBSRANDOM\fP, вони втратять свої особливі властивості, навіть якщо згодом значення буде знову встановлено. Станом виходу буде «істина», якщо не буде виявлено призначені лише для читання або непридатні до скасування встановлення значення \fIназв\fP. .TP \fBwait\fP [\fB\-fn\fP] [\fB\-p\fP \fIназва_змінної\fP] [\fIідентифікатор\fP .\|.\|.] Очікувати кожен зазначений дочірній процес \fIідентифікатор\fP і повернути стан завершення останнього \fIідентифікатора\fP. Кожен \fIідентифікатор\fP може бути \fIідентифікатором процесу\fP або \fIспецифікацією завдання\fP; якщо вказано специфікацію завдання, \fBwait\fP очікує на всі процеси у завданні. .IP Якщо не вказано жодних параметрів або \fIідентифікаторів\fP, \fBwait\fP очікує на всі запущені фонові завдання та підставляння останнього виконаного процесу, якщо його ідентифікатор процесу такий самий, як \fB$!\fP, а повернутий стан дорівнює нулю. .IP Якщо вказано параметр \fB\-n\fP, \fBwait\fP очікує завершення будь\-якого з наданих \fIідентифікаторів\fP або, якщо \fIідентифікатор\fP не вказано, будь\-якого підставляння завдання чи процесу та повертає стан виходу. Якщо жоден з наданих \fIідентифікаторів\fP не є дочірнім елементом оболонки, або якщо \fIідентифікатор\fP не вказано, а оболонка не має неочікуваних дочірніх елементів, стан виходу дорівнює 127. .IP Якщо вказано параметр \fB\-p\fP, \fBwait\fP призначає ідентифікатор процесу або завдання, для якого повертається стан завершення, змінній \fIназва_змінної\fP, іменованій аргументом параметра. Змінна, яка не може бути доступна лише для читання, буде спочатку скинута перед будь\-яким наданням значення. Це корисно лише при використанні з пареметром \fB\-n\fP. .IP Якщо за допомогою параметра \fB\-f\fP увімкнено керування завданнями, \fBwait\fP змушує чекати завершення кожного \fIідентифікатора\fP перед поверненням його стану, замість повернення стану після зміни стану. .IP Якщо жоден з \fIідентифікаторів\fP не вказує на один з активних дочірніх процесів оболонки, станом повернення буде 127. Якщо \fBwait\fP переривається сигналом, будь\-яка \fIназва змінної\fP залишиться невстановленим, а стан повернення буде більшим за 128, як описано в розділі \fBSIGNALS\fP. .ie \n(zZ=1 in \fIbash\fP(1). .el above. В інших випадках повернутий стан є станом виходу останнього \fIідентифікатора\fP. .SH "РЕЖИМ СУМІСНОСТІ ОБОЛОНКИ" У bash\-4.0 було впроваджено поняття \fIрівень сумісності оболонки\fP, яке визначається як набір параметрів вбудованої команди shopt: \fBcompat31\fP, \fBcompat32\fP, \fBcompat40\fP, \fBcompat41\fP тощо. У поточній версії передбачено визначення лише одного рівня сумісності — усі варіанти є взаємно виключними. Рівень сумісності призначено для того, щоб уможливити для користувачів вибір поведінки попередніх версій, які є несумісними із новими версіями на час перенесення скриптів на використання поточних можливостей і поточної поведінки оболонки. Таке рішення ми вважаємо тимчасовим. .PP У цій версії немає описів поведінки, яка є стандартною для певної версії (наприклад, встановлення \fBcompat32\fP означає, що нейтралізація правого боку оператора відповідності за формальним виразом призводить до нейтралізації спеціальних символів формального виразу у слові, тобто типової поведінки для bash\-3.2 та новіших версій). .PP Якщо користувач увімкне, скажімо, \fBcompat32\fP, це може вплинути на поведінку інших рівнів сумісності, аж до, включно, поточного рівня сумісності. Ідея полягає у тому, що кожен рівень сумісності керує поведінкою, яку було змінено у відповідній версії \fBbash\fP, але вона могла бути характерною для попередніх версій. Наприклад, зміну щодо використання порівнянь із врахуванням локалі у команді \fB[[\fP було впроваджено у bash\-4.1, а у попередніх версіях було використано порівняння на основі ASCII, тому вмикання \fBcompat32\fP призведе також до вмикання порівнянь на основі ASCII. Так модульність може бути недостатньою для усіх випадків використання, тому користувачам слід бути доволі обережними із застосуванням рівнів сумісності. Ознайомтеся із документацією, що визначити поточну поведінку оболонки для потрібної вам можливості. .PP У bash\-4.3 впроваджено нову змінну оболонки: .SM \fBBASH_COMPAT\fP. Значення, яке надано цій змінній (десятковий дріб номера версії, зокрема 4.2, або ціле число, яке відповідає параметру \fBcompat\fP\fINN\fP, зокрема 42), визначає рівень сумісності. .PP Починаючи з bash\-4.4, у \fBbash\fP розпочато вилучення параметрів застарілих рівнів сумісності. Нарешті, параметри буде вилучено і заміщено .SM \fBBASH_COMPAT\fP. .PP Bash\-5.0 є останньою версією, для якої передбачено окремий параметр shopt для попередньої версії. .SM \fBBASH_COMPAT\fP — це єдиний механізм для контролю рівня сумісності у версіях, новіших за bash\-5.0. .PP У наведеній нижче таблиці описується зміна поведінки, керована кожним значенням рівня сумісності. Тег \fBcompat\fP \fINN\fP використовується як скорочення для встановлення рівня сумісності до \fINN\fP, використовуючи один з наведених механізмів. Для версій до bash\-5.0 рівень сумісності можна встановити за допомогою відповідного параметра shopt \fBcompat\fP\fINN\fP. Для bash\-4.3 та пізніших версій краще використовувати змінну .SM \fBBASH_COMPAT\fP, і це потрібно робити для bash\-5.1 та пізніших версій. .TP \fBcompat31\fP .PD 0 .RS .IP \(bu Взяття у лапки правої частини рівності оператора встановлення відповідності за формальним виразом у команді \fB[[\fP (=\*~) не має особливого ефекту. .RE .PD .TP \fBcompat32\fP .PD 0 .RS .IP \(bu Оператори \fB<\fP та \fB>\fP команди \fB[[\fP не враховують поточну локаль під час порівняння рядків; вони використовують порядок ASCII. .RE .PD .TP \fBcompat40\fP .PD 0 .RS .IP \(bu Оператори \fB<\fP і \fB>\fP команди \fB[[\fP не враховують поточну локаль при порівнянні рядків; буде використано упорядковування за ASCII. У версіях \fBBash\fP до bash\-4.1 використано упорядковування за ASCII і \fIstrcmp\fP(3); у bash\-4.1 і пізніших версіях використано послідовність упорядковування поточної локалі та \fIstrcoll\fP(3). .RE .PD .TP \fBcompat41\fP .PD 0 .RS .IP \(bu У режимі posix після \fBtime\fP можуть бути параметри, але команду все одно буде розпізнано як зарезервоване слово (це інтерпретація .SM POSIX 267). .IP \(bu У режимі \fIposix\fP обробник потребує, щоб у частині \fIслово\fP розгортання параметра у подвійних лапках була парна кількість одинарних лапок, і обробляє їх по\-особливому: символи в одинарних лапках вважаються нейтралізованими (це інтерпретація .SM POSIX 221). .RE .PD .TP \fBcompat42\fP .PD 0 .RS .IP \(bu Рядок\-замінник при заміні із взірцем у подвійних лапках не підлягає вилученню лапок, як у версіях після bash\-4.2. .IP \(bu у режимі posix одинарні лапки вважаються особливим символом при розгортанні частини \fIслово\fP у розгортанні параметрів у подвійних лапках: ними можна скористатися для екранування правої фігурної дужки або іншого спеціального символу (це частина інтерпретації .SM POSIX 221); у пізніших версіях одинарні лапки не вважаються особливим символом у розгортання у подвійних лапках .RE .PD .TP \fBcompat43\fP .PD 0 .RS .IP \(bu Помилки розгортання слів вважаються нефатальними помилками, які призводять до збою поточної команди, навіть у режимі posix (типова поведінка полягає в тому, щоб зробити їх фатальними помилками, які призводять до виходу оболонки). .IP \(bu Під час виконання функції оболонки стан циклу (while/until/тощо) не скидається, тому \fBbreak\fP або \fBcontinue\fP в цій функції переривають або продовжують цикли в контексті виклику. Bash\-4.4 і новіші скидають стан циклу, щоб запобігти цьому. .RE .PD .TP \fBcompat44\fP .PD 0 .RS .IP \(bu Оболонка встановлює значення, використовувані .SM \fBBASH_ARGV\fP і .SM \fBBASH_ARGC\fP, щоб вони могли розширюватися до позиційних параметрів оболонки, навіть якщо режим розширеного налагодження не ввімкнено. .IP \(bu Підоболонка успадковує цикли від батьківського контексту, тому \fBbreak\fP або \fBcontinue\fP призведе до виходу з підоболонки. Bash\-5.0 і новіші скидають стан циклу, щоб запобігти виходу .IP \(bu Присвоєння змінним, що передують вбудованим командам, таким як \fBexport\fP і \fBreadonly\fP, які встановлюють атрибути, продовжують впливати на змінні з такими ж назвами в середовищі, що викликає, навіть якщо оболонка не перебуває в режимі posix. .RE .PD .TP \fBcompat50\fP .PD 0 .RS .IP \(bu У bash\-5.1 змінено спосіб генерування .SM \fB$RANDOM\fP, щоб трохи підвищити випадковість. Якщо рівень сумісності оболонки встановлено на 50 або нижче, вона повертається до методу з bash\-5.0 та попередніх версій, тому ініціалізація генератора випадкових чисел присвоєнням значення .SM \fBRANDOM\fP призведе до тієї ж послідовності, що й у bash\-5,0. .IP \(bu Якщо геш\-таблиця команд порожня, версії bash до bash\-5.1 виводили повідомлення про це, навіть коли створювали вихідні дані, які можна повторно використати як вхідні дані. Bash\-5.1 пригнічує це повідомлення, коли надано параметр \fB\-l\fP. .RE .PD .TP \fBcompat51\fP .PD 0 .RS .IP \(bu Вбудована команда \fBunset\fP обробляє спроби скасувати підписи масиву \fB@\fP і \fB*\fP по\-різному, залежно від того, є масив індексованим чи асоціативним, та інакше від попередніх версій. .IP \(bu Арифметичні команди ( \fB((\fP.\|.\|.\&\fB))\fP ) та вирази в арифметичному операторі for можна розгортати декілька разів. .IP \(bu Вирази, що використовуються як аргументи арифметичних операторів у команді умови \fB[[\fP, можна розгортати декілька разів. .IP \(bu Вирази у параметрі підрядка розгортання дужок може бути розгорнуто декілька разів. .IP \(bu Вирази в розгортанні слів \fB$((\fP.\|.\|.\&\fB))\fP можна розгортати декілька разів. .IP \(bu Арифметичні вирази, що використовуються як підписи індексованих масивів, можна розгортати більше одного разу. .IP \(bu \fBtest \-v\fP, якщо команді передано аргумент \fBA[@]\fP, де \fBA\fP — це наявний асоціативний масив, поверне true, якщо масив містить будь\-які встановлені елементи. Bash\-5.2 шукатиме та повідомлятиме про ключ з назвою \fB@\fP. .IP \(bu Розгортання слів ${\fIпараметр\fP\fB[:]=\fP\fIзначення\fP} поверне \fIзначення\fP до виконання будь\-яких перетворень, специфічних для змінної (наприклад, перетворення у нижній регістр). Bash\-5.2 поверне кінцеве значення, призначене змінній. .IP \(bu Обробка підставляння команд працюватиме так, ніби ввімкнено розширене використання замінників (див. опис вбудованої функції \fBshopt\fP вище), тому розбір підставляння команди, що містить шаблон extglob (скажімо, як частину функції оболонки), не призведе до помилки. Це передбачає, що метою є увімкнення extglob перед виконанням команди та виконанням розгортання слів. Це призведе до помилки під час розгортання слів, якщо extglob не було увімкнено на момент виконання команди. .RE .PD .TP \fBcompat52\fP .PD 0 .RS .IP \(bu Вбудований метод \fBtest\fP використовує свій історичний алгоритм для розбору підвиразів у дужках, коли їм передано п'ять або більше аргументів. .IP \(bu Якщо вбудованій функції \fB\-p\fP передано параметр \fB\-P\fP або \fB\-P\fP, \fBbind\fP обробляє будь\-які аргументи, що залишилися після обробки параметрів, як назви команд, що пов'язуються, і показує будь\-які послідовності клавіш, пов'язані з цими командами, замість того, щоб обробляти аргументи як послідовності клавіш для пов'язування. .RE .PD .if \n(zZ=1 .ig zZ .\" bash_builtins .SH "ОБМЕЖЕНА ОБОЛОНКА" .\" rbash.1 .zY .PP Якщо \fBbash\fP запущено з назвою \fBrbash\fP, або під час виклику додано параметр \fB\-r\fP, оболонка стає \fIобмеженою\fP. Обмежена оболонка використовується для налаштування середовища, більш керованого, ніж стандартна оболонка. Вона поводиться як \fBbash\fP, за винятком того, що не виконуються або заборонені такі дії: .IP \(bu Зміна каталогів за допомогою \fBcd\fP. .IP \(bu Встановлення значення або скасовування встановлення значення .SM \fBSHELL\fP, .SM \fBPATH\fP, .SM \fBHISTFILE\fP, .SM \fBENV\fP та .SM \fBBASH_ENV\fP. .IP \(bu Задання назв команд, які містять \fB/\fP. .IP \(bu Задання назви файла, яка містить \fB/\fP, як аргументу вбудованої команди \fB.\fP. .IP \(bu Використання параметра \fB\-p\fP до вбудованої команди \fBcommand\fP для визначення шляху пошуку. .IP \(bu Задання назви файла, що містить символ похилої риски, як аргументу вбудованої команди \fBhistory\fP. .IP \(bu Задання назви файла, що містить символ похилої риски, як аргументу параметра \fB\-p\fP вбудованої команди \fBhash\fP. .IP \(bu Імпортування визначень функцій із середовища оболонки під час запуску. .IP \(bu Обробка значень .SM \fBBASHOPTS\fP і .SM \fBSHELLOPTS\fP із середовища оболонки під час запуску. .IP \(bu Переспрямування виводу з використанням операторів переспрямування >, >|, <>, >&, &>, і >>. .IP \(bu Використання вбудованої команди \fBexec\fP для заміни оболонки іншою командою. .IP \(bu Додавання або вилучення вбудованих команд за допомогою параметрів \fB\-f\fP і \fB\-d\fP вбудованої команди \fBenable\fP. .IP \(bu Використання вбудованої команди \fBenable\fP для вмикання вимкненої вбудованої команди оболонки. .IP \(bu Додавання параметра \fB\-p\fP до вбудованої команди \fBcommand\fP. .IP \(bu Вимикання обмеженого режиму за допомогою \fBset +r\fP або \fBset +o restricted\fP. .PP Ці обмеження буде примусово застосовано після читання усіх файлів запуску. .PP .ie \n(zY=1 When a command that is found to be a shell script is executed, .el \{ When a command that is found to be a shell script is executed (see .SM .B "COMMAND EXECUTION" above), .\} \fBrbash\fP вимикає усі обмеження щодо виконання скрипту у запущеній оболонці. .if \n(zY=1 .ig zY .\" end of rbash.1 .SH "ДИВ. ТАКОЖ" .PD 0 .TP \fIBash Reference Manual\fP, Brian Fox і Chet Ramey .TP \fIThe Gnu Readline Library\fP, Brian Fox і Chet Ramey .TP \fIThe Gnu History Library\fP, Brian Fox і Chet Ramey .TP \fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE \(em http://pubs.opengroup.org/onlinepubs/9799919799/ .TP http://tiswww.case.edu/\*~chet/bash/POSIX \(em — опис режиму posix .TP \fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) .TP \fIemacs\fP(1), \fIvi\fP(1) .TP \fIreadline\fP(3) .PD .SH ФАЙЛИ .PD 0 .TP .FN /bin/bash Виконуваний файл \fBbash\fP .TP .FN /etc/profile Загальносистемний файл ініціалізації, який буду виконано для оболонок входу до системи .TP .FN \*~/.bash_profile Особистий файл ініціалізації, який буду виконано для оболонок входу до системи .TP .FN \*~/.bashrc Індивідуальний файл запуску для окремої інтерактивної оболонки .TP .FN \*~/.bash_logout Індивідуальний файл чищення оболонки входу до системи, який буде виконано під час завершення роботи оболонки входу до системи .TP .FN \*~/.bash_history Типове значення \fBHISTFILE\fP, файл, у якому bash зберігає журнал команд .TP .FN \*~/.inputrc Індивідуальний файл ініціалізації \fIreadline\fP .PD .SH АВТОРИ Brian Fox, Free Software Foundation .br bfox@gnu.org .PP Chet Ramey, Західний резервний університет Кейса .br chet.ramey@case.edu .SH "ЗВІТУВАННЯ ПРО ВАДИ" Якщо вами буде виявлено ваду у \fBbash\fP, вам слід повідомити про неї. Втім, спочатку слід переконатися, що це справді вада, і що її можна відтворити у найсвіжішій версії \fBbash\fP. Код найсвіжішої версії завжди можна знайти на \fIftp://ftp.gnu.org/pub/gnu/bash/\fP і \fIhttp://git.savannah.gnu.org/cgit/bash.git/snapshot/bash\-master.tar.gz\fP. .PP Щойно вами буде встановлено достеменне існування вади, скористайтеся командою \fIbashbug\fP для надсилання звіту щодо вади. Якщо ви знаєте, як виправити ваду, будемо раді, якщо ви повідомите нам про це! Ви можете надіслати пропозиції та .Q philosophical звіти щодо вад на адресу \fIbug\-bash@gnu.org\fP або розмістити їх у групі новин Usenet \fBgnu.bash.bug\fP. .PP До УСІХ звітів щодо вад має бути включено: .PP .PD 0 .TP 20 Номер версії \fBbash\fP .TP Дані щодо обладнання та операційної системи .TP Дані щодо компілятора, використаного для збирання програми .TP Опис поведінки програми під час відтворення вади .TP Короткий скрипт або .Q recipe призводить до проявів вади .PD .PP \fIbashbug\fP автоматично вставляє перші три записи до шаблону, який він надає для створення звіту щодо вади. .PP Коментарі та звіти щодо вад у цій сторінці підручника слід спрямовувати на адресу \fIchet.ramey@case.edu\fP. .SH ВАДИ Він надто великий та надто повільний. .PP Між \fBbash\fP та традиційними версіями \fBsh\fP є деякі незначні відмінності, які пов'язано, здебільшого, зі специфікацією .SM POSIX . .PP У деяких випадках використання є проблеми із альтернативами. .PP Вбудовані команди та функції оболонки не підлягають зупиненню або повторному запуску. .PP Складені команди і списки команд у формі .Q "a ; b ; c" не обробляються належним чином у поєднанні з призупиненням процесу. Коли процес зупинено, оболонка негайно виконує наступну команду зі списку або виходить з будь\-яких наявних циклів. Достатньо взяти команду в дужки, щоб примусово перевести її в підоболонку, яку можна зупинити як єдине ціле, або запустити команду у фоновому режимі та одразу перевести її на передній план. .PP Змінні\-масиви не можна (ще) експортувати. .zZ .zY .PP .SH ПЕРЕКЛАД Український переклад цієї сторінки посібника виконано Andrij Mizyk , Andriy Rysin , Yuri Chornoivan і lxlalexlxl . .PP Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE . НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ. .PP Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: .MT trans-uk@lists.fedoraproject.org .ME .