переменные в среде Linux

Объек­ты, кото­рые зада­ют­ся име­на­ми и содер­жат дан­ные, исполь­зу­е­мые по край­ней мере одним, обыч­но несколь­ки­ми при­ло­же­ни­я­ми, назы­ва­ют­ся пере­мен­ны­ми сре­ды. Про­ще гово­ря, пере­мен­ная окру­же­ния явля­ет­ся не чем иным, как пере­мен­ной, кото­рая име­ет имя и значение.

Зна­че­ни­я­ми пере­мен­ной сре­ды может быть редак­тор по умол­ча­нию, кото­рый будет исполь­зо­вать­ся, напри­мер, рас­по­ло­же­ние всех фай­лов, кото­рые могут быть выпол­не­ны в систе­ме или локаль­ные настрой­ки для систе­мы. Для начи­на­ю­щих Linux это немно­го слож­но, но пере­мен­ная окру­же­ния – отлич­ный спо­соб сов­мест­но­го исполь­зо­ва­ния настро­ек кон­фи­гу­ра­ции меж­ду несколь­ки­ми при­ло­же­ни­я­ми и процессами.

В паке­те Coreutils раз­ме­ще­ны про­грам­мы env и printenv. Что­бы пере­чис­лить все пере­мен­ные сре­ды, кото­рые в насто­я­щее вре­мя име­ют зна­че­ние, про­сто введите:

 

В обо­лоч­ке bash суще­ству­ют два типа пере­мен­ных среды:

  • Гло­баль­ные переменные
  • Мест­ные переменные

Глобальные переменные окружения

Из сеан­са обо­лоч­ки отоб­ра­жа­ют­ся гло­баль­ные пере­мен­ные окру­же­ния, и любые дочер­ние про­цес­сы, кото­рые гене­ри­ру­ет оболочка.

С дру­гой сто­ро­ны, локаль­ные пере­мен­ные могут быть доступ­ны в обо­лоч­ке толь­ко при их созда­нии. Это дела­ет гло­баль­ные пере­мен­ные сре­ды полез­ны­ми в при­ло­же­ни­ях, кото­рые тре­бу­ют инфор­ма­ции из роди­тель­ско­го про­цес­са и порож­да­ют дочер­ние процессы.

По умол­ча­нию систе­ма Linux уста­нав­ли­ва­ет опре­де­лен­ные гло­баль­ные пере­мен­ные сре­ды при запус­ке сеан­са bash. Пере­мен­ные систем­ной сре­ды каж­дый раз исполь­зу­ют все заглав­ные бук­вы, что­бы отли­чать их от обыч­ных пере­мен­ных сре­ды пользователя.

Локальные переменные среды

Посколь­ку их имя ука­зы­ва­ет, что пере­мен­ные локаль­ной сре­ды могут отоб­ра­жать­ся толь­ко в локаль­ном про­цес­се, в кото­ром они опре­де­ле­ны. Не сме­ши­вай­те, хотя и о пере­мен­ных локаль­ной сре­ды, они оди­на­ко­во важ­ны как гло­баль­ные пере­мен­ные сре­ды. Фак­ти­че­ски, систе­ма Linux так­же по умол­ча­нию будет опре­де­лять стан­дарт­ные локаль­ные пере­мен­ные сре­ды для вас. Это ста­но­вит­ся слож­но, когда вы пыта­е­тесь уви­деть спи­сок пере­мен­ных локаль­ной сре­ды. К сожа­ле­нию, для нас нет коман­ды, кото­рая будет отоб­ра­жать толь­ко локаль­ные пере­мен­ные сре­ды. Суще­ству­ет коман­да, кото­рая отоб­ра­жа­ет все пере­мен­ные сре­ды, задан­ные для опре­де­лен­но­го про­цес­са. Обра­ти­те вни­ма­ние, что это так­же вклю­ча­ет гло­баль­ные пере­мен­ные окружения.

Установка переменных среды

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

Настройка переменных локальной среды

После запус­ка обо­лоч­ки bash (или появ­ле­ния сце­на­рия обо­лоч­ки) вам раз­ре­ше­но созда­вать локаль­ные пере­мен­ные, кото­рые вид­ны внут­ри ваше­го shell-про­цес­са. Вы може­те при­сво­ить пере­мен­ную окру­же­ния пере­мен­ной string или numeric с помо­щью зна­ка равен­ства, кото­ро­му при­сва­и­ва­ет­ся зна­че­ние переменной:

 

Поздрав­ля­ем, вы толь­ко что созда­ли свою первую пере­мен­ную. Про­сто помни­те, что в любое вре­мя вам нуж­но ссы­лать­ся на зна­че­ние пере­мен­ной сре­ды andreyex_test, про­сто ссы­лай­тесь на нее по име­ни $ andreyex_test.

Если вам нуж­но назна­чить стро­ку зна­че­ний, содер­жа­щих про­бе­лы, вам нуж­но будет исполь­зо­вать один кавы­чек, что­бы ука­зать нача­ло и конец строки:

 

Если оста­вить его без оди­ноч­ных кавы­чек, обо­лоч­ка bash пред­по­ла­га­ет, что сле­ду­ю­щий сим­вол – это еще одна коман­да для обработки.

Обра­ти­те вни­ма­ние, что для пере­мен­ной локаль­но­го окру­же­ния, кото­рую мы опре­де­ли­ли, мы исполь­зо­ва­ли строч­ные бук­вы,  пере­мен­ные систем­ной сре­ды, кото­рые мы виде­ли до сих пор, исполь­зо­ва­ли все про­пис­ные буквы.

В обо­лоч­ке bash это стан­дарт­ное согла­ше­ние. Если вы настра­и­ва­е­те новые пере­мен­ные сре­ды, это не тре­бу­ет­ся, но реко­мен­ду­ет­ся исполь­зо­вать строч­ные бук­вы. Это помо­га­ет диф­фе­рен­ци­ро­вать ваши лич­ные пере­мен­ные сре­ды из резуль­та­тов пере­мен­ных систем­ной среды.

ПРИМЕЧАНИЕ. Очень важ­но, что­бы меж­ду име­нем пере­мен­ной сре­ды, зна­ком равен­ства и зна­че­ни­ем не было про­бе­лов. Если вы поме­ща­е­те какие-либо про­бе­лы в при­сва­и­ва­ние, обо­лоч­ка bash интер­пре­ти­ру­ет зна­че­ние как отдель­ную команду:

 

Уста­нов­лен­ная локаль­ная пере­мен­ная сре­ды в вашем про­цес­се обо­лоч­ки будет доступ­на для исполь­зо­ва­ния в любом месте ваше­го shell-про­цес­са. Но если вы созда­е­те дру­гую обо­лоч­ку, она недо­ступ­на в дочер­ней оболочке:

 

В этом слу­чае мы нача­ли дочер­нюю обо­лоч­ку. Как вы може­те заме­тить, пере­мен­ная сре­ды andreyex_test недо­ступ­на в дочер­ней обо­лоч­ке (она содер­жит пустое зна­че­ние). После того как мы оста­ви­ли дочер­нюю обо­лоч­ку и вер­ну­лись к исход­ной обо­лоч­ке, пере­мен­ная локаль­ной сре­ды все еще была доступна.

Ана­ло­гич­но, если вы уста­но­ви­те локаль­ную пере­мен­ную окру­же­ния в дочер­нем про­цес­се после того, как вы поки­не­те дочер­ний про­цесс, пере­мен­ная локаль­ной сре­ды пере­ста­ет быть доступной:

 

Пере­мен­ная сре­ды andreyex_test, уста­нов­лен­ная в дочер­ней обо­лоч­ке, не суще­ству­ет, когда мы воз­вра­ща­ем­ся к роди­тель­ской оболочке.

Настройка глобальных переменных окружения

Гло­баль­ные пере­мен­ные окру­же­ния вид­ны из всех про­цес­сов дочер­не­го про­цес­са, создан­ных про­цес­сом, кото­рый уста­нав­ли­ва­ет гло­баль­ную пере­мен­ную сре­ды. Метод, исполь­зу­е­мый для созда­ния гло­баль­ной пере­мен­ной окру­же­ния, заклю­ча­ет­ся в созда­нии локаль­ной пере­мен­ной сре­ды, а затем ее экс­пор­та в гло­баль­ную среду.

Это выпол­ня­ет­ся с помо­щью коман­ды export:

 

После того, как мы исполь­зу­ем экс­порт коман­ды в локаль­ной пере­мен­ной сре­ды andreyex_test, мы нача­ли новый про­цесс обо­лоч­ки и про­смот­ре­ли зна­че­ние пере­мен­ной сре­ды andreyex_test. На этот раз коман­да export сде­ла­ла гло­баль­ную пере­мен­ную сре­ды гло­баль­ной, поэто­му она сохра­ни­ла свою ценность.

Совет:
Обра­ти­те вни­ма­ние, что при запус­ке экс­пор­та коман­ды в локаль­ной пере­мен­ной сре­ды вы не исполь­зу­е­те знак дол­ла­ра для ссыл­ки на имя переменной.

Удаление переменных среды

Оче­вид­но, что если вы може­те создать новую пере­мен­ную сре­ды, было бы разум­но, что вы так­же може­те уда­лить суще­ству­ю­щую пере­мен­ную сре­ды. Это мож­но сде­лать, исполь­зуя коман­ду unset:

 

Если вы ссы­ла­е­тесь на пере­мен­ную сре­ды в коман­де unset, имей­те в виду не исполь­зо­вать знак доллара.

При рабо­те с гло­баль­ны­ми пере­мен­ны­ми сре­ды все ста­но­вит­ся немно­го слож­нее. Если вы нахо­ди­тесь в дочер­нем про­цес­се и отклю­чи­те гло­баль­ную пере­мен­ную окру­же­ния, она при­ме­ни­ма толь­ко к дочер­не­му про­цес­су. Гло­баль­ная пере­мен­ная сре­ды оста­ет­ся доступ­ной в роди­тель­ском процессе:

 

В этом при­ме­ре мы уста­нав­ли­ва­ем локаль­ную пере­мен­ную сре­ды, назы­ва­е­мую andreyex_test, затем экс­пор­ти­ру­ем ее, что­бы сде­лать ее гло­баль­ной пере­мен­ной окру­же­ния. Затем мы нача­ли про­цесс дочер­ней обо­лоч­ки и были про­ве­ре­ны, что­бы убе­дить­ся, что гло­баль­ная пере­мен­ная сре­ды andreyex_test все еще доступ­на. Затем, еще нахо­дясь в дочер­ней обо­лоч­ке, мы исполь­зо­ва­ли коман­ду unset для уда­ле­ния гло­баль­ной пере­мен­ной сре­ды andreyex_test, а затем вышли из дочер­ней обо­лоч­ки. Теперь вер­нем­ся к исход­ной роди­тель­ской обо­лоч­ке, мы про­ве­ри­ли зна­че­ние пере­мен­ной сре­ды andreyex_test, и оно все еще действует.

Переменные среды Shell по умолчанию

Суще­ству­ют кон­крет­ные пере­мен­ные сре­ды, кото­рые bash shell исполь­зу­ет для опре­де­ле­ния систем­ной сре­ды. Вы все­гда може­те под­счи­тать эти пере­мен­ные, кото­рые будут исполь­зо­вать­ся в вашей систе­ме Linux. Посколь­ку обо­лоч­ка bash явля­ет­ся про­из­вод­ной исход­ной обо­лоч­ки Unix Bourne, она так­же вклю­ча­ет пере­мен­ные сре­ды, пер­во­на­чаль­но опре­де­лен­ные в этой оболочке.

Сле­ду­ю­щие при­ме­ры пока­зы­ва­ют, что пере­мен­ные сре­ды, предо­став­ля­е­мые обо­лоч­кой bash, сов­ме­сти­мы с исход­ной обо­лоч­кой Unix Bourne.

До сих пор наи­бо­лее цен­ной пере­мен­ной сре­ды в этом спис­ке явля­ет­ся пере­мен­ная сре­ды PATH.

Когда вы вво­ди­те коман­ду в команд­ной обо­лоч­ке обо­лоч­ки (интер­фейс команд­ной стро­ки), обо­лоч­ка долж­на искать систе­му, что­бы най­ти про­грам­му. Ката­ло­ги, кото­рые он ищет в поис­ках команд, опре­де­ля­ют­ся пере­мен­ной сре­ды PATH. В систе­ме Linux пере­мен­ная сре­ды PATH долж­на выгля­деть при­мер­но так:

 

В этом слу­чае пока­за­но, что суще­ству­ет восемь ката­ло­гов, в кото­рых обо­лоч­ка ищет коман­ды. Каж­дый ката­лог раз­де­ля­ет­ся двое­то­чи­ем, и в кон­це пере­мен­ной PATH нет и кон­ца спис­ка ката­ло­гов. Вы все­гда може­те доба­вить допол­ни­тель­ные ката­ло­ги в PATH, доба­вив новый ката­лог и доба­вив еще один двое­то­чие. PATH так­же демон­стри­ру­ет запрос, в кото­ром он ищет заказы.

В допол­не­ние к стан­дарт­ным пере­мен­ным сре­ды Bourne, обо­лоч­ка bash так­же предо­став­ля­ет несколь­ко пере­мен­ных, как показано:

Переменные Bash Shell Bourne:

CDPATH: спи­сок ката­ло­гов, раз­де­лен­ных двое­то­чи­я­ми, исполь­зу­е­мых в каче­стве пути поис­ка для коман­ды cd.
HOME: домаш­ний ката­лог теку­ще­го пользователя.
IFS: спи­сок сим­во­лов, кото­рые раз­де­ля­ют поля, исполь­зу­е­мые обо­лоч­кой для раз­де­ле­ния тек­сто­вых строк.
MAIL: имя фай­ла для поч­то­во­го ящи­ка теку­ще­го поль­зо­ва­те­ля. Обо­лоч­ка bash про­ве­ря­ет этот файл для новой почты.
MAILPATH: спи­сок из несколь­ких имен фай­лов для поч­то­во­го ящи­ка теку­ще­го поль­зо­ва­те­ля. Обо­лоч­ка bash про­ве­ря­ет каж­дый файл в этом спис­ке для новой почты.
OPTARG: зна­че­ние послед­не­го аргу­мен­та пара­мет­ра, обра­ба­ты­ва­е­мо­го коман­дой getopts.
OPTIND: зна­че­ние индек­са послед­не­го аргу­мен­та пара­мет­ра, обра­бо­тан­но­го коман­дой getopts.
PATH: спи­сок ката­ло­гов, раз­де­лен­ных двое­то­чи­я­ми, где обо­лоч­ка ищет команды.
PS1: стро­ка при­гла­ше­ния команд­ной стро­ки основ­ной команд­ной строки.
PS2: стро­ка при­гла­ше­ния интер­фей­са команд­ной стро­ки вто­рич­ной оболочки.

Переменные среды Shell bash:

BASH: пол­ное имя пути для выпол­не­ния теку­ще­го экзем­пля­ра обо­лоч­ки bash.
BASH_ENV: при уста­нов­ке каж­дый сце­на­рий bash пыта­ет­ся запу­стить файл запус­ка, опре­де­лен­ный этой пере­мен­ной перед запуском.
BASH_VERSION: номер вер­сии теку­ще­го экзем­пля­ра обо­лоч­ки bash.
BASH_VERSINFO: мас­сив пере­мен­ных, содер­жа­щий отдель­ные основ­ные и млад­шие номе­ра вер­сий теку­ще­го экзем­пля­ра обо­лоч­ки bash.
COLUMNS: содер­жит шири­ну тер­ми­на­ла тер­ми­на­ла, исполь­зу­е­мую для теку­ще­го экзем­пля­ра обо­лоч­ки bash.
COMP_CWORD: индекс в пере­мен­ной COMP_WORDS, кото­рый содер­жит теку­щую пози­цию курсора.
COMP_LINE: теку­щая команд­ная строка.
COMP_POINT: индекс теку­щей пози­ции кур­со­ра отно­си­тель­но нача­ла теку­щей команды.
COMP_WORDS: пере­мен­ный мас­сив, содер­жа­щий отдель­ные сло­ва в теку­щей команд­ной строке.
COMPREPLY: пере­мен­ный мас­сив, содер­жа­щий воз­мож­ные коды завер­ше­ния, гене­ри­ру­е­мые функ­ци­ей оболочки.
DIRSTACK: мас­сив пере­мен­ных, содер­жа­щий теку­щее содер­жи­мое сте­ка директорий.
EUID: эффек­тив­ный иден­ти­фи­ка­тор поль­зо­ва­те­ля теку­ще­го пользователя.
FCEDIT: редак­тор по умол­ча­нию, исполь­зу­е­мый коман­дой fc.
FIGNORE: спи­сок суф­фик­сов, раз­де­лен­ных двое­то­чи­я­ми, для игно­ри­ро­ва­ния при выпол­не­нии завер­ше­ния име­ни файла.
FUNCNAME: имя испол­ня­е­мой в дан­ный момент функ­ции оболочки.
GLOBIGNORE: спи­сок раз­де­лен­ных двое­то­чи­я­ми шаб­ло­нов, опре­де­ля­ю­щих набор имен фай­лов, кото­рые сле­ду­ет игно­ри­ро­вать, рас­ши­ряя имя файла.
GROUPS: пере­мен­ный мас­сив, содер­жа­щий спи­сок групп, чле­ном кото­ро­го явля­ет­ся теку­щий пользователь.
histchars: до трех сим­во­лов, кото­рые управ­ля­ют рас­ши­ре­ни­ем истории.
HISTCMD: номер исто­рии теку­щей команды.
HISTCONTROL: Управ­ля­ет тем, какие коман­ды вво­дят­ся в спис­ке исто­рии оболочки.
HISTFILE: имя фай­ла для сохра­не­ния спис­ка исто­рии обо­лоч­ки (по умол­ча­нию – исто­рия .bash).
HISTFILESIZE: мак­си­маль­ное коли­че­ство строк для сохра­не­ния в фай­ле истории.
HISTIGNORE: спи­сок шаб­ло­нов, раз­де­лен­ных двое­то­чи­ем, исполь­зу­е­мый для опре­де­ле­ния того, какие коман­ды игно­ри­ру­ют­ся для фай­ла истории.
HISTSIZE: мак­си­маль­ное коли­че­ство команд, хра­ня­щих­ся в фай­ле истории.
HOSTFILE: содер­жит имя фай­ла, кото­рый дол­жен быть про­чи­тан, когда обо­лоч­ке необ­хо­ди­мо запол­нить имя хоста.
HOSTNAME: имя теку­ще­го хоста.
HOSTTYPE: Стро­ка, опи­сы­ва­ю­щая маши­ну bash-shell, работает.
IGNOREEOF: коли­че­ство после­до­ва­тель­ных сим­во­лов EOF, кото­рые долж­на полу­чить обо­лоч­ка перед выхо­дом. Если это зна­че­ние не суще­ству­ет, по умол­ча­нию оно рав­но единице.
INPUTRC: имя фай­ла ини­ци­а­ли­за­ции Readline (по умол­ча­нию – .inputrc).
LANG: кате­го­рия лока­ли для оболочки.
LC_ALL: пере­опре­де­ля­ет пере­мен­ную LANG, опре­де­ляя кате­го­рию локали.
LC_COLLATE: уста­нав­ли­ва­ет поря­док сор­ти­ров­ки, исполь­зу­е­мый при сор­ти­ров­ке стро­ко­вых значений.
LC_CTYPE: Опре­де­ля­ет интер­пре­та­цию сим­во­лов, исполь­зу­е­мых при рас­ши­ре­нии име­ни фай­ла и сопо­став­ле­нии с образцом.
LC_MESSAGES: опре­де­ля­ет пара­метр лока­ли, исполь­зу­е­мый при интер­пре­та­ции строк с двой­ны­ми кавыч­ка­ми, кото­рым пред­ше­ству­ет знак доллара.
LC_NUMERIC: ука­зы­ва­ет локаль­ную настрой­ку, исполь­зу­е­мую для фор­ма­ти­ро­ва­ния чисел.
LINENO: номер стро­ки в испол­ня­е­мом скрипте.
LINES: Опре­де­ля­ет коли­че­ство линий, доступ­ных на терминале.
MACHTYPE: стро­ка, опре­де­ля­ю­щая тип систе­мы в фор­ма­те cpu-company-system.
MAILCHECK: как часто обо­лоч­ка долж­на про­ве­рять (по умол­ча­нию 60 секунд) для новой почты.
OLDPWD: преды­ду­щий рабо­чий ката­лог, исполь­зу­е­мый в оболочке.
OPTERR: если уста­нов­ле­но зна­че­ние 1, обо­лоч­ка bash отоб­ра­жа­ет ошиб­ки, сге­не­ри­ро­ван­ные коман­дой getopts.
OSTYPE: Стро­ка, опре­де­ля­ю­щая опе­ра­ци­он­ную систе­му, в кото­рой рабо­та­ет оболочка.
PIPESTATUS: пере­мен­ный мас­сив, содер­жа­щий спи­сок зна­че­ний ста­ту­са выхо­да из про­цес­сов про­цес­са перед­не­го плана.
POSIXLY_CORRECT: если уста­нов­ле­но, bash запус­ка­ет­ся в режи­ме POSIX.
PPID: иден­ти­фи­ка­тор про­цес­са (PID) роди­тель­ско­го про­цес­са обо­лоч­ки bash.
PROMPT_COMMAND: если уста­нов­ле­но, коман­да для выпол­не­ния перед отоб­ра­же­ни­ем пер­вич­но­го приглашения.
PS3: при­гла­ше­ние исполь­зо­вать коман­ду select.
PS4: под­сказ­ка, отоб­ра­жа­е­мая до того, как команд­ная стро­ка будет эхом, если исполь­зу­ет­ся пара­метр bash -x.
PWD: теку­щий рабо­чий каталог.
RANDOM: воз­вра­ща­ет слу­чай­ное чис­ло от 0 до 32767. При­сво­е­ние зна­че­ния этой пере­мен­ной сге­не­ри­ру­ет гене­ра­тор слу­чай­ных чисел.
REPLY: пере­мен­ная по умол­ча­нию для коман­ды чтения.
SECONDS: коли­че­ство секунд с момен­та запус­ка обо­лоч­ки. При­сво­е­ние зна­че­ния сбра­сы­ва­ет тай­мер на значение.
SHELLOPTS: спи­сок раз­ре­шен­ных опций обо­лоч­ки bash, раз­де­лен­ных двоеточием.
SHLVL: ука­зы­ва­ет уро­вень обо­лоч­ки, уве­ли­чи­ва­ю­щий­ся на еди­ни­цу при каж­дом запус­ке новой обо­лоч­ки bash.
TIMEFORMAT: фор­мат, опре­де­ля­ю­щий, как обо­лоч­ка отоб­ра­жа­ет зна­че­ния времени.
TMOUT: зна­че­ние того, как дол­го (в секун­дах) коман­ды выбо­ра и чте­ния долж­ны ждать вво­да. Зна­че­ние по умол­ча­нию, рав­ное нулю, озна­ча­ет, что нуж­но ждать бесконечно.
UID: реаль­ный иден­ти­фи­ка­тор поль­зо­ва­те­ля теку­ще­го пользователя.

Вы може­те заме­тить, что после исполь­зо­ва­ния коман­ды set отоб­ра­жа­ют­ся не все пере­мен­ные сре­ды по умол­ча­нию. Объ­яс­не­ни­ем это­го может быть то, что хотя это пере­мен­ные сре­ды по умол­ча­нию, не все из них долж­ны содер­жать значение.

Вывод

В этом руко­вод­стве мы рас­смот­ре­ли мир пере­мен­ных сре­ды Linux. Гло­баль­ные пере­мен­ные окру­же­ния часто полу­ча­ют доступ к любо­му дочер­не­му про­цес­су, порож­ден­но­му про­цес­сом, в кото­ром они опре­де­ле­ны. Локаль­ные пере­мен­ные окру­же­ния будут доступ­ны толь­ко из про­цес­са, в кото­ром они определены.

Систе­ма Linux исполь­зу­ет каж­дую гло­баль­ную и локаль­ную пере­мен­ные сре­ды для хра­не­ния инфор­ма­ции о систем­ной сре­де. Вы смо­же­те полу­чить доступ к этой инфор­ма­ции из интер­фей­са команд­ной стро­ки обо­лоч­ки, а так­же для внут­рен­них сце­на­ри­ев обо­лоч­ки. Обо­лоч­ка bash исполь­зу­ет пере­мен­ные систем­ной сре­ды, опре­де­лен­ные в исход­ной обо­лоч­ке UNO Bourne, так­же как и мно­же­ство новых пере­мен­ных сре­ды. Пере­мен­ная сре­ды PATH опре­де­ля­ет шаб­лон поис­ка, кото­рый при­ни­ма­ет обо­лоч­ка bash для поис­ка испол­ня­е­мой коман­ды. Вы смо­же­те изме­нить пере­мен­ную сре­ды PATH, что­бы доба­вить свои соб­ствен­ные ката­ло­ги или, воз­мож­но, теку­щий сим­вол ката­ло­га, что­бы упро­стить рабо­ту с ваши­ми про­грам­ма­ми. Вы так­же може­те созда­вать свои соб­ствен­ные гло­баль­ные и локаль­ные пере­мен­ные сре­ды для соб­ствен­но­го исполь­зо­ва­ния. После созда­ния пере­мен­ной сре­ды она доступ­на для все­го сеан­са оболочки.

Суще­ству­ет мно­го фай­лов запус­ка, кото­рые запус­ка­ют обо­лоч­ку bash после ее запус­ка. Эти фай­лы запус­ка могут содер­жать опре­де­ле­ния пере­мен­ных сре­ды для уста­нов­ки стан­дарт­ных пере­мен­ных сре­ды для каж­до­го сеан­са bash. После вхо­да в систе­му Linux обо­лоч­ка bash обра­ща­ет­ся к фай­лу запус­ка /etc/profile, а так­же к трем локаль­ным фай­лам запус­ка для каж­до­го поль­зо­ва­те­ля, $HOME/.bash, $HOME/.bash login и $HOME/.profile.

Поль­зо­ва­те­ли будут настра­и­вать эти фай­лы для вклю­че­ния пере­мен­ных сре­ды и сце­на­ри­ев запус­ка для соб­ствен­но­го исполь­зо­ва­ния. Обо­лоч­ка bash допол­ни­тель­но предо­став­ля­ет пере­мен­ные мас­си­вы окру­же­ния. Эти пере­мен­ные сре­ды могут содер­жать несколь­ко зна­че­ний в одной пере­мен­ной. Вы смо­же­те полу­чить доступ к зна­че­ни­ям инди­ви­ду­аль­но, ука­зав зна­че­ние индек­са или в целом, ука­зав пол­ное имя мас­си­ва пере­мен­ных сре­ды. Нако­нец, в этом руко­вод­стве мы долж­ны упо­мя­нуть исполь­зо­ва­ние команд­ных псев­до­ни­мов. Хотя не пере­мен­ные сре­ды, псев­до­ни­мы команд ведут себя почти как пере­мен­ные сре­ды. Они поз­во­ля­ют вам опре­де­лять псев­до­ним для коман­ды вме­сте с ее пара­мет­ра­ми. Вме­сто того, что­бы вво­дить очень длин­ную коман­ду и пара­мет­ры, вы смо­же­те про­сто при­сво­ить ей про­стой псев­до­ним и исполь­зо­вать псев­до­ним в любое вре­мя в сеан­се оболочки.