[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/bashrc-configuration":3,"mdc-g67n38-key":1144,"mdc--axky1d-key":1155,"mdc--by0oft-key":1163,"mdc--mvwxny-key":1187,"mdc-rl2ex9-key":1195,"mdc--xbr2mk-key":1211,"mdc-m5c7vs-key":1235,"mdc--p4y0cz-key":1266,"mdc--mxmc1d-key":1283,"mdc-doup6w-key":1307,"related-/guides/linux/alias-command,/guides/linux/ps1-explained,/guides/linux/shell-variables":1323},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":1075,"code":1075,"createdAt":1076,"description":1077,"difficulty":1078,"draft":1079,"estimatedTime":1080,"extension":1081,"faq":1082,"howToSteps":1095,"howToTotalTime":1114,"image":1075,"keywords":1115,"locale":1124,"meta":1125,"navigation":166,"path":1126,"platform":1127,"related":1128,"section":1132,"seo":1133,"severity":1075,"stem":1134,"summary":1135,"tags":1136,"twitterCreator":1075,"twitterSite":1075,"type":1142,"updatedAt":1076,"__hash__":1143},"content_ru/guides/linux/bashrc-configuration.md","Настройка .bashrc: полное руководство по кастомизации терминала",[7,8,9,10,11],"Bash 4.0+","Ubuntu 20.04+","Debian 11+","CentOS 8+","Fedora 35+","FixPedia Team",{"type":14,"value":15,"toc":1052},"minimark",[16,21,33,61,64,68,71,119,123,128,133,205,211,223,233,246,250,256,343,354,358,365,371,404,409,459,476,480,487,493,643,653,657,660,740,744,750,791,801,804,808,811,857,863,867,873,882,909,916,938,946,972,979,1005,1042,1048],[17,18,20],"h2",{"id":19},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,23,24,25,32],"p",{},"Файл ",[26,27,28],"strong",{},[29,30,31],"code",{},".bashrc"," (bash run commands) — это скрипт конфигурации, который автоматически выполняется каждый раз при запуске нового интерактивного окна терминала Bash. Настройка этого файла позволяет:",[34,35,36,43,49,55],"ul",{},[37,38,39,42],"li",{},[26,40,41],{},"Автоматизировать"," рутинные команды через алиасы.",[37,44,45,48],{},[26,46,47],{},"Кастомизировать"," внешний вид командной строки (приглашение PS1, цвета).",[37,50,51,54],{},[26,52,53],{},"Задавать"," глобальные переменные окружения (PATH, EDITOR).",[37,56,57,60],{},[26,58,59],{},"Загружать"," дополнительные функции и скрипты.",[22,62,63],{},"Этот гайд поможет вам превратить стандартный терминал в мощный и удобный инструмент, адаптированный под ваши задачи.",[17,65,67],{"id":66},"требования-подготовка","Требования / Подготовка",[22,69,70],{},"Перед началом убедитесь, что:",[72,73,74,89,96,106],"ol",{},[37,75,76,77,80,81,84,85,88],{},"Вы работаете в ",[26,78,79],{},"оболочке Bash"," (обычно по умолчанию). Проверить можно командой ",[29,82,83],{},"echo $SHELL",". Если путь заканчивается на ",[29,86,87],{},"/bash",", всё в порядке.",[37,90,91,92,95],{},"У вас есть доступ к домашней директории (",[29,93,94],{},"~",").",[37,97,98,99,102,103,95],{},"Установлен текстовый редактор (рекомендуется ",[29,100,101],{},"nano"," для новичков или ",[29,104,105],{},"vim",[37,107,108,109,112,113,112,116,95],{},"Вы понимаете базовые команды Linux (",[29,110,111],{},"ls",", ",[29,114,115],{},"cd",[29,117,118],{},"cat",[17,120,122],{"id":121},"пошаговая-инструкция","Пошаговая инструкция",[124,125,127],"h3",{"id":126},"шаг-1-найдите-и-откройте-файл-bashrc","Шаг 1: Найдите и откройте файл .bashrc",[22,129,24,130,132],{},[29,131,31],{}," расположен в вашей домашней директории. Он может быть скрытым (начинается с точки).",[134,135,140],"pre",{"className":136,"code":137,"language":138,"meta":139,"style":139},"language-bash shiki shiki-themes github-light github-dark","# Перейдите в домашнюю директорию\ncd ~\n\n# Проверьте, существует ли файл\nls -la .bashrc\n\n# Если файла нет, создайте его (часто он уже есть)\ntouch .bashrc\n","bash","",[29,141,142,151,161,168,174,186,191,197],{"__ignoreMap":139},[143,144,147],"span",{"class":145,"line":146},"line",1,[143,148,150],{"class":149},"sJ8bj","# Перейдите в домашнюю директорию\n",[143,152,154,157],{"class":145,"line":153},2,[143,155,115],{"class":156},"sj4cs",[143,158,160],{"class":159},"sZZnC"," ~\n",[143,162,164],{"class":145,"line":163},3,[143,165,167],{"emptyLinePlaceholder":166},true,"\n",[143,169,171],{"class":145,"line":170},4,[143,172,173],{"class":149},"# Проверьте, существует ли файл\n",[143,175,177,180,183],{"class":145,"line":176},5,[143,178,111],{"class":179},"sScJk",[143,181,182],{"class":156}," -la",[143,184,185],{"class":159}," .bashrc\n",[143,187,189],{"class":145,"line":188},6,[143,190,167],{"emptyLinePlaceholder":166},[143,192,194],{"class":145,"line":193},7,[143,195,196],{"class":149},"# Если файла нет, создайте его (часто он уже есть)\n",[143,198,200,203],{"class":145,"line":199},8,[143,201,202],{"class":179},"touch",[143,204,185],{"class":159},[22,206,207,208,210],{},"Откройте файл в редакторе. Для новичков проще ",[29,209,101],{},":",[134,212,214],{"className":136,"code":213,"language":138,"meta":139,"style":139},"nano ~/.bashrc\n",[29,215,216],{"__ignoreMap":139},[143,217,218,220],{"class":145,"line":146},[143,219,101],{"class":179},[143,221,222],{"class":159}," ~/.bashrc\n",[22,224,225,226,228,229,232],{},"Для опытных пользователей подойдёт ",[29,227,105],{}," или ",[29,230,231],{},"vim ~/.bashrc",".",[234,235,236],"blockquote",{},[22,237,238,239,242,243,232],{},"💡 ",[26,240,241],{},"Совет:"," Перед редактированием сделайте резервную копию: ",[29,244,245],{},"cp ~/.bashrc ~/.bashrc.backup",[124,247,249],{"id":248},"шаг-2-добавьте-простой-алиас","Шаг 2: Добавьте простой алиас",[22,251,252,253,255],{},"Алиас — это сокращение для длинной команды. Добавьте в конец файла ",[29,254,31],{}," следующие строки:",[134,257,259],{"className":136,"code":258,"language":138,"meta":139,"style":139},"# Обновление списка пакетов и установка (для Debian/Ubuntu)\nalias update='sudo apt update && sudo apt upgrade -y'\n\n# Краткий список файлов с деталями и цветами\nalias ll='ls -la --color=auto'\n\n# Быстрый переход на уровень выше\nalias ..='cd ..'\n\n# Очистка экрана с дополнительной командой (пример)\nalias cls='clear && echo \"Терминал очищен\"'\n",[29,260,261,266,282,286,291,303,307,312,319,324,330],{"__ignoreMap":139},[143,262,263],{"class":145,"line":146},[143,264,265],{"class":149},"# Обновление списка пакетов и установка (для Debian/Ubuntu)\n",[143,267,268,272,276,279],{"class":145,"line":153},[143,269,271],{"class":270},"szBVR","alias",[143,273,275],{"class":274},"sVt8B"," update",[143,277,278],{"class":270},"=",[143,280,281],{"class":159},"'sudo apt update && sudo apt upgrade -y'\n",[143,283,284],{"class":145,"line":163},[143,285,167],{"emptyLinePlaceholder":166},[143,287,288],{"class":145,"line":170},[143,289,290],{"class":149},"# Краткий список файлов с деталями и цветами\n",[143,292,293,295,298,300],{"class":145,"line":176},[143,294,271],{"class":270},[143,296,297],{"class":274}," ll",[143,299,278],{"class":270},[143,301,302],{"class":159},"'ls -la --color=auto'\n",[143,304,305],{"class":145,"line":188},[143,306,167],{"emptyLinePlaceholder":166},[143,308,309],{"class":145,"line":193},[143,310,311],{"class":149},"# Быстрый переход на уровень выше\n",[143,313,314,316],{"class":145,"line":199},[143,315,271],{"class":156},[143,317,318],{"class":159}," ..='cd ..'\n",[143,320,322],{"class":145,"line":321},9,[143,323,167],{"emptyLinePlaceholder":166},[143,325,327],{"class":145,"line":326},10,[143,328,329],{"class":149},"# Очистка экрана с дополнительной командой (пример)\n",[143,331,333,335,338,340],{"class":145,"line":332},11,[143,334,271],{"class":270},[143,336,337],{"class":274}," cls",[143,339,278],{"class":270},[143,341,342],{"class":159},"'clear && echo \"Терминал очищен\"'\n",[22,344,345,346,349,350,353],{},"Сохраните файл (",[29,347,348],{},"Ctrl+O"," в nano, ",[29,351,352],{},":wq"," в vim) и закройте редактор.",[124,355,357],{"id":356},"шаг-3-настройте-приглашение-командной-строки-ps1","Шаг 3: Настройте приглашение командной строки (PS1)",[22,359,360,361,364],{},"Переменная ",[29,362,363],{},"PS1"," определяет, как выглядит ваше приглашение ввода. Стандартное значение может быть скучным.",[22,366,367,368,370],{},"Добавьте в ",[29,369,31],{}," строку для настройки:",[134,372,374],{"className":136,"code":373,"language":138,"meta":139,"style":139},"# Пример: user@host:/текущая/папка$\nPS1='\\[\\e[0;32m\\]\\u@\\h:\\w\\$\\[\\e[0m\\] '\n\n# Или с временем и базовым цветом\n# PS1='[\\t] \\u@\\h:\\w\\$ '\n",[29,375,376,381,390,394,399],{"__ignoreMap":139},[143,377,378],{"class":145,"line":146},[143,379,380],{"class":149},"# Пример: user@host:/текущая/папка$\n",[143,382,383,385,387],{"class":145,"line":153},[143,384,363],{"class":274},[143,386,278],{"class":270},[143,388,389],{"class":159},"'\\[\\e[0;32m\\]\\u@\\h:\\w\\$\\[\\e[0m\\] '\n",[143,391,392],{"class":145,"line":163},[143,393,167],{"emptyLinePlaceholder":166},[143,395,396],{"class":145,"line":170},[143,397,398],{"class":149},"# Или с временем и базовым цветом\n",[143,400,401],{"class":145,"line":176},[143,402,403],{"class":149},"# PS1='[\\t] \\u@\\h:\\w\\$ '\n",[22,405,406],{},[26,407,408],{},"Расшифровка кодов:",[34,410,411,417,423,432,446],{},[37,412,413,416],{},[29,414,415],{},"\\u"," — имя пользователя.",[37,418,419,422],{},[29,420,421],{},"\\h"," — имя хоста (до первой точки).",[37,424,425,428,429,431],{},[29,426,427],{},"\\w"," — полный путь к текущей директории, с ",[29,430,94],{}," для домашней.",[37,433,434,437,438,441,442,445],{},[29,435,436],{},"\\$"," — показывает ",[29,439,440],{},"#"," для root, ",[29,443,444],{},"$"," для обычного пользователя.",[37,447,448,451,452,455,456,95],{},[29,449,450],{},"\\[\\e[...m\\]"," — управляющие последовательности для цветов (зелёный ",[29,453,454],{},"0;32",", сброс ",[29,457,458],{},"0m",[234,460,461],{},[22,462,463,464,467,468,471,472,475],{},"⚠️ ",[26,465,466],{},"Важно:"," Цветовые коды должны быть обрамлены ",[29,469,470],{},"\\["," и ",[29,473,474],{},"\\]",", иначе команды «съедают» символы в истории.",[124,477,479],{"id":478},"шаг-4-добавьте-пользовательские-функции","Шаг 4: Добавьте пользовательские функции",[22,481,482,483,486],{},"Для сложных последовательностей команд используйте ",[26,484,485],{},"функции",". Они мощнее алиасов, так как могут принимать аргументы.",[22,488,489,490,492],{},"В ",[29,491,31],{}," добавьте:",[134,494,496],{"className":136,"code":495,"language":138,"meta":139,"style":139},"# Создаёт папку и сразу в неё переходит\nmkcd() {\n    mkdir -p \"$1\" && cd \"$1\"\n}\n\n# Поиск файлов по имени (игнорируя регистр)\nfindfile() {\n    find . -type f -iname \"*$1*\" 2>/dev/null\n}\n\n# Быстрый просмотр использования диска в текущей папке\ndiskspace() {\n    du -sh . 2>/dev/null || echo \"Ошибка доступа\"\n}\n",[29,497,498,503,511,540,545,549,554,561,592,596,600,605,613,638],{"__ignoreMap":139},[143,499,500],{"class":145,"line":146},[143,501,502],{"class":149},"# Создаёт папку и сразу в неё переходит\n",[143,504,505,508],{"class":145,"line":153},[143,506,507],{"class":179},"mkcd",[143,509,510],{"class":274},"() {\n",[143,512,513,516,519,522,525,528,531,533,535,537],{"class":145,"line":163},[143,514,515],{"class":179},"    mkdir",[143,517,518],{"class":156}," -p",[143,520,521],{"class":159}," \"",[143,523,524],{"class":156},"$1",[143,526,527],{"class":159},"\"",[143,529,530],{"class":274}," && ",[143,532,115],{"class":156},[143,534,521],{"class":159},[143,536,524],{"class":156},[143,538,539],{"class":159},"\"\n",[143,541,542],{"class":145,"line":170},[143,543,544],{"class":274},"}\n",[143,546,547],{"class":145,"line":176},[143,548,167],{"emptyLinePlaceholder":166},[143,550,551],{"class":145,"line":188},[143,552,553],{"class":149},"# Поиск файлов по имени (игнорируя регистр)\n",[143,555,556,559],{"class":145,"line":193},[143,557,558],{"class":179},"findfile",[143,560,510],{"class":274},[143,562,563,566,569,572,575,578,581,583,586,589],{"class":145,"line":199},[143,564,565],{"class":179},"    find",[143,567,568],{"class":159}," .",[143,570,571],{"class":156}," -type",[143,573,574],{"class":159}," f",[143,576,577],{"class":156}," -iname",[143,579,580],{"class":159}," \"*",[143,582,524],{"class":156},[143,584,585],{"class":159},"*\"",[143,587,588],{"class":270}," 2>",[143,590,591],{"class":159},"/dev/null\n",[143,593,594],{"class":145,"line":321},[143,595,544],{"class":274},[143,597,598],{"class":145,"line":326},[143,599,167],{"emptyLinePlaceholder":166},[143,601,602],{"class":145,"line":332},[143,603,604],{"class":149},"# Быстрый просмотр использования диска в текущей папке\n",[143,606,608,611],{"class":145,"line":607},12,[143,609,610],{"class":179},"diskspace",[143,612,510],{"class":274},[143,614,616,619,622,624,626,629,632,635],{"class":145,"line":615},13,[143,617,618],{"class":179},"    du",[143,620,621],{"class":156}," -sh",[143,623,568],{"class":159},[143,625,588],{"class":270},[143,627,628],{"class":159},"/dev/null",[143,630,631],{"class":270}," ||",[143,633,634],{"class":156}," echo",[143,636,637],{"class":159}," \"Ошибка доступа\"\n",[143,639,641],{"class":145,"line":640},14,[143,642,544],{"class":274},[22,644,645,646,649,650,232],{},"Теперь команда ",[29,647,648],{},"mkcd новая_папка"," создаст и откроет папку ",[29,651,652],{},"новая_папка",[124,654,656],{"id":655},"шаг-5-экспортируйте-переменные-окружения","Шаг 5: Экспортируйте переменные окружения",[22,658,659],{},"Переменные окружения доступны всем программам, запущенным из shell.",[134,661,663],{"className":136,"code":662,"language":138,"meta":139,"style":139},"# Установка редактора по умолчанию (для git, crontab -e и др.)\nexport EDITOR=nano\n# Или для Vim: export EDITOR=vim\n\n# Добавление пользовательских бинарников в PATH\nexport PATH=\"$HOME/.local/bin:$PATH\"\n\n# Установка языка для некоторых утилит (например, для вывода даты)\nexport LC_TIME=\"ru_RU.UTF-8\"\n",[29,664,665,670,683,688,692,697,719,723,728],{"__ignoreMap":139},[143,666,667],{"class":145,"line":146},[143,668,669],{"class":149},"# Установка редактора по умолчанию (для git, crontab -e и др.)\n",[143,671,672,675,678,680],{"class":145,"line":153},[143,673,674],{"class":270},"export",[143,676,677],{"class":274}," EDITOR",[143,679,278],{"class":270},[143,681,682],{"class":274},"nano\n",[143,684,685],{"class":145,"line":163},[143,686,687],{"class":149},"# Или для Vim: export EDITOR=vim\n",[143,689,690],{"class":145,"line":170},[143,691,167],{"emptyLinePlaceholder":166},[143,693,694],{"class":145,"line":176},[143,695,696],{"class":149},"# Добавление пользовательских бинарников в PATH\n",[143,698,699,701,704,706,708,711,714,717],{"class":145,"line":188},[143,700,674],{"class":270},[143,702,703],{"class":274}," PATH",[143,705,278],{"class":270},[143,707,527],{"class":159},[143,709,710],{"class":274},"$HOME",[143,712,713],{"class":159},"/.local/bin:",[143,715,716],{"class":274},"$PATH",[143,718,539],{"class":159},[143,720,721],{"class":145,"line":193},[143,722,167],{"emptyLinePlaceholder":166},[143,724,725],{"class":145,"line":199},[143,726,727],{"class":149},"# Установка языка для некоторых утилит (например, для вывода даты)\n",[143,729,730,732,735,737],{"class":145,"line":321},[143,731,674],{"class":270},[143,733,734],{"class":274}," LC_TIME",[143,736,278],{"class":270},[143,738,739],{"class":159},"\"ru_RU.UTF-8\"\n",[124,741,743],{"id":742},"шаг-6-примените-изменения","Шаг 6: Примените изменения",[22,745,746,747,749],{},"После сохранения ",[29,748,31],{}," изменения не вступят в силу в уже открытых окнах терминала. Есть два способа:",[72,751,752,785],{},[37,753,754,757,758,770,773,774],{},[26,755,756],{},"Для текущего окна:"," выполните команду",[134,759,761],{"className":136,"code":760,"language":138,"meta":139,"style":139},"source ~/.bashrc\n",[29,762,763],{"__ignoreMap":139},[143,764,765,768],{"class":145,"line":146},[143,766,767],{"class":156},"source",[143,769,222],{"class":159},[771,772],"br",{},"или её аналог",[134,775,777],{"className":136,"code":776,"language":138,"meta":139,"style":139},". ~/.bashrc\n",[29,778,779],{"__ignoreMap":139},[143,780,781,783],{"class":145,"line":146},[143,782,232],{"class":156},[143,784,222],{"class":159},[37,786,787,790],{},[26,788,789],{},"Для всех будущих окон:"," просто закройте и снова откройте терминал.",[22,792,793,794,112,797,800],{},"Проверьте работу алиасов (",[29,795,796],{},"ll",[29,798,799],{},"..",") и нового приглашения командной строки.",[802,803],"in-article-ad",{},[17,805,807],{"id":806},"проверка-результата","Проверка результата",[22,809,810],{},"Убедитесь, что всё работает корректно:",[72,812,813,822,831,845],{},[37,814,815,818,819,821],{},[26,816,817],{},"Проверьте алиасы:"," выполните ",[29,820,271],{},". В списке должны быть те, что вы добавили.",[37,823,824,827,828,830],{},[26,825,826],{},"Проверьте приглашение:"," оно должно соответствовать настройкам ",[29,829,363],{}," (цвет, формат).",[37,832,833,836,837,840,841,844],{},[26,834,835],{},"Проверьте функцию:"," попробуйте ",[29,838,839],{},"mkcd test_folder"," — должна создаться папка ",[29,842,843],{},"test_folder"," и вы в неё перейти.",[37,846,847,818,850,853,854,856],{},[26,848,849],{},"Проверьте переменные:",[29,851,852],{},"echo $EDITOR"," — должен быть ",[29,855,101],{}," (или то, что вы указали).",[22,858,859,860,862],{},"Если что-то не работает, откройте ",[29,861,31],{}," и проверьте синтаксис (особенно кавычки и пробелы).",[17,864,866],{"id":865},"возможные-проблемы","Возможные проблемы",[124,868,870,871],{"id":869},"проблема-терминал-не-запускается-после-правки-bashrc","Проблема: Терминал не запускается после правки ",[29,872,31],{},[22,874,875,878,879],{},[26,876,877],{},"Причина:"," Синтаксическая ошибка в файле (например, незакрытая кавычка).\n",[26,880,881],{},"Решение:",[72,883,884,891,894,900],{},[37,885,886,887,890],{},"Нажмите ",[29,888,889],{},"Ctrl+Alt+F3"," (или другую F-клавишу) для перехода в текстовую консоль.",[37,892,893],{},"Войдите под своим логином.",[37,895,896,897,232],{},"Отредактируйте файл, исправив ошибку: ",[29,898,899],{},"nano ~/.bashrc",[37,901,902,903,228,906,95],{},"Вернитесь в графический интерфейс (",[29,904,905],{},"Ctrl+Alt+F1",[29,907,908],{},"F2",[124,910,912,913,915],{"id":911},"проблема-цвета-в-ps1-отображаются-как-garbled-символы","Проблема: Цвета в ",[29,914,363],{}," отображаются как garbled-символы",[22,917,918,920,921,923,924,926,927,929,930,471,932,934,935,232],{},[26,919,877],{}," Неправильное использование управляющих последовательностей или их отсутствие в ",[29,922,470],{}," ",[29,925,474],{},".\n",[26,928,881],{}," Убедитесь, что все ANSI-коды цветов обернуты в ",[29,931,470],{},[29,933,474],{},". Пример правильного оформления: ",[29,936,937],{},"PS1='\\[\\e[1;34m\\]\\u@\\h:\\w\\$\\[\\e[0m\\] '",[124,939,941,942,945],{"id":940},"проблема-алиасы-не-работают-в-sudo-командах","Проблема: Алиасы не работают в ",[29,943,944],{},"sudo","-командах",[22,947,948,923,950,952,953,955,956,958,959,962,963,965,966,969,970,232],{},[26,949,877],{},[29,951,944],{}," по умолчанию сбрасывает переменные окружения, включая алиасы.\n",[26,954,881],{}," Используйте ",[29,957,944],{}," с флагом ",[29,960,961],{},"-E"," (сохранить окружение) или создавайте алиас для ",[29,964,944],{}," (например, ",[29,967,968],{},"alias s='sudo'","), но это менее безопасно. Лучше явно прописывать полную команду после ",[29,971,944],{},[124,973,975,976,978],{"id":974},"проблема-изменения-bashrc-не-применяются-при-ssh-подключении","Проблема: Изменения ",[29,977,31],{}," не применяются при SSH-подключении",[22,980,981,983,984,228,987,990,991,993,994,996,997,1000,1001,1004],{},[26,982,877],{}," При SSH-логине читается ",[29,985,986],{},".bash_profile",[29,988,989],{},".profile",", а не ",[29,992,31],{}," (зависит от дистрибутива).\n",[26,995,881],{}," В файле ",[29,998,999],{},"~/.bash_profile"," (или ",[29,1002,1003],{},"~/.profile",") добавьте строку:",[134,1006,1008],{"className":136,"code":1007,"language":138,"meta":139,"style":139},"if [ -f ~/.bashrc ]; then\n    source ~/.bashrc\nfi\n",[29,1009,1010,1030,1037],{"__ignoreMap":139},[143,1011,1012,1015,1018,1021,1024,1027],{"class":145,"line":146},[143,1013,1014],{"class":270},"if",[143,1016,1017],{"class":274}," [ ",[143,1019,1020],{"class":270},"-f",[143,1022,1023],{"class":270}," ~",[143,1025,1026],{"class":274},"/.bashrc ]; ",[143,1028,1029],{"class":270},"then\n",[143,1031,1032,1035],{"class":145,"line":153},[143,1033,1034],{"class":156},"    source",[143,1036,222],{"class":159},[143,1038,1039],{"class":145,"line":163},[143,1040,1041],{"class":270},"fi\n",[22,1043,1044,1045,1047],{},"Это гарантирует выполнение ",[29,1046,31],{}," при логине.",[1049,1050,1051],"style",{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":139,"searchDepth":153,"depth":153,"links":1053},[1054,1055,1056,1064,1065],{"id":19,"depth":153,"text":20},{"id":66,"depth":153,"text":67},{"id":121,"depth":153,"text":122,"children":1057},[1058,1059,1060,1061,1062,1063],{"id":126,"depth":163,"text":127},{"id":248,"depth":163,"text":249},{"id":356,"depth":163,"text":357},{"id":478,"depth":163,"text":479},{"id":655,"depth":163,"text":656},{"id":742,"depth":163,"text":743},{"id":806,"depth":153,"text":807},{"id":865,"depth":153,"text":866,"children":1066},[1067,1069,1071,1073],{"id":869,"depth":163,"text":1068},"Проблема: Терминал не запускается после правки .bashrc",{"id":911,"depth":163,"text":1070},"Проблема: Цвета в PS1 отображаются как garbled-символы",{"id":940,"depth":163,"text":1072},"Проблема: Алиасы не работают в sudo-командах",{"id":974,"depth":163,"text":1074},"Проблема: Изменения .bashrc не применяются при SSH-подключении",null,"2026-02-16 18:46:43","Узнайте, как полностью настроить оболочку Bash под свои нужды. Пошаговая инструкция по созданию алиасов, кастомизации приглашения PS1 и автоматизации команд. За 15 минут.","easy",false,"15-30 мин","md",[1083,1086,1089,1092],{"question":1084,"answer":1085},"Безопасно ли редактировать .bashrc? Что делать, если сломал терминал?","Да, это безопасно. Если после правки терминал не запускается, войдите в консоль recovery mode (Ctrl+Alt+F3) и исправьте файл, вернув предыдущую версию из бэкапа.",{"question":1087,"answer":1088},"В чём разница между .bashrc и .bash_profile?",".bashrc выполняется для каждого интерактивного не-логинового shell (обычные окна терминала). .bash_profile — только при логине (например, через SSH). В большинстве дистрибутивов .bash_profile вызывает .bashrc.",{"question":1090,"answer":1091},"Как сделать изменения в .bashrc действующими без перезагрузки?","Выполните команду `source ~/.bashrc` или `. ~/.bashrc` в текущем терминале. Это применит настройки мгновенно.",{"question":1093,"answer":1094},"Почему мои алиасы не работают в скриптах?","По умолчанию скрипты Bash запускаются в non-interactive режиме, где .bashrc не читается. Для алиасов в скриптах используйте функции или вызывайте .bashrc явно.",[1096,1099,1102,1105,1108,1111],{"name":1097,"text":1098},"Найдите и откройте файл .bashrc","Файл .bashrc находится в домашней директории (`~`). Он может быть скрытым. Откройте его в текстовом редакторе (nano, vim, code).",{"name":1100,"text":1101},"Добавьте простой алиас","В конец файла добавьте строку `alias ll='ls -la --color=auto'`. Это создаст команду `ll` для подробного списка файлов.",{"name":1103,"text":1104},"Настройте приглашение командной строки (PS1)","Измените переменную `PS1` в файле. Например: `PS1='\\u@\\h:\\w\\$ '` покажет `user@host:/путь$`.",{"name":1106,"text":1107},"Добавьте пользовательские функции","Для сложных команд создайте функцию. Пример: `mkcd() { mkdir -p \"$1\" && cd \"$1\"; }` создаст папку и войдёт в неё.",{"name":1109,"text":1110},"Экспортируйте переменные окружения","Добавьте `export EDITOR=nano` или `export PATH=$PATH:/home/user/bin`, чтобы сделать настройки глобальными для shell.",{"name":1112,"text":1113},"Примените изменения","Сохраните файл и выполните `source ~/.bashrc` в текущем терминале, чтобы изменения вступили в силу.","PT20M",[1116,1117,1118,1119,1120,1121,1122,1123],"bashrc настройка","как изменить приглашение командной строки linux","bashrc примеры алиасов","файл .bashrc что это","кастомизация bash терминала","переменная PS1 объяснение","автоматизация команд linux","bashrc vs bash_profile","ru_RU",{},"/guides/linux/bashrc-configuration","linux",[1129,1130,1131],"/guides/linux/alias-command","/guides/linux/ps1-explained","/guides/linux/shell-variables","Гайды по Linux",{"title":5,"description":1077},"guides/linux/bashrc-configuration","Этот гайд подробно объясняет, что такое файл .bashrc и как его редактировать для автоматизации задач, изменения вида командной строки и настройки переменных окружения. Вы научитесь создавать полезные алиасы и кастомизировать терминал.",[1137,138,1138,1139,1140,1141],"гайды linux","терминал","настройка","automation","конфигурация","guide","qkwfTap10KdWlu0AI4ZINwfyiw_frcNJN5kgumG3BKM",{"data":1145,"body":1146},{},{"type":1147,"children":1148},"root",[1149],{"type":1150,"tag":22,"props":1151,"children":1152},"element",{},[1153],{"type":1154,"value":1085},"text",{"data":1156,"body":1157},{},{"type":1147,"children":1158},[1159],{"type":1150,"tag":22,"props":1160,"children":1161},{},[1162],{"type":1154,"value":1088},{"data":1164,"body":1165},{},{"type":1147,"children":1166},[1167],{"type":1150,"tag":22,"props":1168,"children":1169},{},[1170,1172,1178,1179,1185],{"type":1154,"value":1171},"Выполните команду ",{"type":1150,"tag":29,"props":1173,"children":1175},{"className":1174},[],[1176],{"type":1154,"value":1177},"source ~/.bashrc",{"type":1154,"value":228},{"type":1150,"tag":29,"props":1180,"children":1182},{"className":1181},[],[1183],{"type":1154,"value":1184},". ~/.bashrc",{"type":1154,"value":1186}," в текущем терминале. Это применит настройки мгновенно.",{"data":1188,"body":1189},{},{"type":1147,"children":1190},[1191],{"type":1150,"tag":22,"props":1192,"children":1193},{},[1194],{"type":1154,"value":1094},{"data":1196,"body":1197},{},{"type":1147,"children":1198},[1199],{"type":1150,"tag":22,"props":1200,"children":1201},{},[1202,1204,1209],{"type":1154,"value":1203},"Файл .bashrc находится в домашней директории (",{"type":1150,"tag":29,"props":1205,"children":1207},{"className":1206},[],[1208],{"type":1154,"value":94},{"type":1154,"value":1210},"). Он может быть скрытым. Откройте его в текстовом редакторе (nano, vim, code).",{"data":1212,"body":1213},{},{"type":1147,"children":1214},[1215],{"type":1150,"tag":22,"props":1216,"children":1217},{},[1218,1220,1226,1228,1233],{"type":1154,"value":1219},"В конец файла добавьте строку ",{"type":1150,"tag":29,"props":1221,"children":1223},{"className":1222},[],[1224],{"type":1154,"value":1225},"alias ll='ls -la --color=auto'",{"type":1154,"value":1227},". Это создаст команду ",{"type":1150,"tag":29,"props":1229,"children":1231},{"className":1230},[],[1232],{"type":1154,"value":796},{"type":1154,"value":1234}," для подробного списка файлов.",{"data":1236,"body":1237},{},{"type":1147,"children":1238},[1239],{"type":1150,"tag":22,"props":1240,"children":1241},{},[1242,1244,1249,1251,1257,1259,1265],{"type":1154,"value":1243},"Измените переменную ",{"type":1150,"tag":29,"props":1245,"children":1247},{"className":1246},[],[1248],{"type":1154,"value":363},{"type":1154,"value":1250}," в файле. Например: ",{"type":1150,"tag":29,"props":1252,"children":1254},{"className":1253},[],[1255],{"type":1154,"value":1256},"PS1='\\u@\\h:\\w\\$ '",{"type":1154,"value":1258}," покажет ",{"type":1150,"tag":29,"props":1260,"children":1262},{"className":1261},[],[1263],{"type":1154,"value":1264},"user@host:/путь$",{"type":1154,"value":232},{"data":1267,"body":1268},{},{"type":1147,"children":1269},[1270],{"type":1150,"tag":22,"props":1271,"children":1272},{},[1273,1275,1281],{"type":1154,"value":1274},"Для сложных команд создайте функцию. Пример: ",{"type":1150,"tag":29,"props":1276,"children":1278},{"className":1277},[],[1279],{"type":1154,"value":1280},"mkcd() { mkdir -p \"$1\" && cd \"$1\"; }",{"type":1154,"value":1282}," создаст папку и войдёт в неё.",{"data":1284,"body":1285},{},{"type":1147,"children":1286},[1287],{"type":1150,"tag":22,"props":1288,"children":1289},{},[1290,1292,1298,1299,1305],{"type":1154,"value":1291},"Добавьте ",{"type":1150,"tag":29,"props":1293,"children":1295},{"className":1294},[],[1296],{"type":1154,"value":1297},"export EDITOR=nano",{"type":1154,"value":228},{"type":1150,"tag":29,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":1154,"value":1304},"export PATH=$PATH:/home/user/bin",{"type":1154,"value":1306},", чтобы сделать настройки глобальными для shell.",{"data":1308,"body":1309},{},{"type":1147,"children":1310},[1311],{"type":1150,"tag":22,"props":1312,"children":1313},{},[1314,1316,1321],{"type":1154,"value":1315},"Сохраните файл и выполните ",{"type":1150,"tag":29,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":1154,"value":1177},{"type":1154,"value":1322}," в текущем терминале, чтобы изменения вступили в силу.",[1324],{"id":1325,"title":1326,"appliesTo":1327,"author":12,"body":1329,"canonical":1075,"code":1075,"createdAt":2234,"description":2235,"difficulty":1078,"draft":1079,"estimatedTime":2236,"extension":1081,"faq":2237,"howToSteps":2250,"howToTotalTime":2265,"image":1075,"keywords":2266,"locale":1124,"meta":2277,"navigation":166,"path":1131,"platform":1127,"related":2278,"section":2282,"seo":2283,"severity":1075,"stem":2284,"summary":2285,"tags":2286,"twitterCreator":1075,"twitterSite":1075,"type":1142,"updatedAt":2234,"__hash__":2292},"content_ru/guides/linux/shell-variables.md","Переменные оболочки Linux: подробное руководство по использованию",[7,1328,8,10],"Zsh 5.0+",{"type":14,"value":1330,"toc":2217},[1331,1333,1336,1338,1368,1372,1386,1470,1480,1484,1493,1623,1627,1634,1706,1709,1726,1730,1738,1741,1771,1778,1784,1875,1879,1930,1932,1936,1939,2100,2102,2135,2137,2214],[17,1332,20],{"id":19},[22,1334,1335],{},"Переменные оболочки (shell variables) — это фундаментальный механизм Linux-терминала, позволяющий хранить и повторно использовать данные: пути к файлам, настройки программ, результаты команд. Они являются основой для написания эффективных скриптов на Bash/Zsh, настройки среды разработки и автоматизации рутинных задач. Понимание работы с переменными кардинально повышает эффективность работы в командной строке.",[17,1337,67],{"id":66},[34,1339,1340,1343,1346,1351],{},[37,1341,1342],{},"Доступ к терминалу Linux (любого дистрибутива: Ubuntu, Fedora, Debian, Arch и т.д.).",[37,1344,1345],{},"Базовое знакомство с командной строкой.",[37,1347,1348,1349,232],{},"Используемая оболочка (shell) по умолчанию — Bash (рекомендуется) или Zsh. Проверить можно командой ",[29,1350,83],{},[37,1352,1353,1354,112,1357,112,1359,112,1362,112,1365,95],{},"Права на выполнение стандартных команд (",[29,1355,1356],{},"echo",[29,1358,674],{},[29,1360,1361],{},"unset",[29,1363,1364],{},"set",[29,1366,1367],{},"env",[17,1369,1371],{"id":1370},"шаг-1-объявление-и-присвоение-значения-переменной","Шаг 1: Объявление и присвоение значения переменной",[22,1373,1374,1375,1378,1379,1381,1382,1385],{},"Создание переменной выполняется простым присваиванием. ",[26,1376,1377],{},"Крайне важно:"," вокруг знака равенства ",[29,1380,278],{}," не должно быть пробелов. Имя переменной может содержать буквы, цифры и символ подчёркивания (",[29,1383,1384],{},"_","), но не может начинаться с цифры.",[134,1387,1389],{"className":136,"code":1388,"language":138,"meta":139,"style":139},"# Простое объявление\nGREETING=\"Привет, мир!\"\n\n# Можно присвоить результат команды (используем команду substitution)\nCURRENT_DATE=$(date +%Y-%m-%d)\nUSER_HOME=$(echo $HOME) # $HOME — уже существующая системная переменная\n\n# Пример с числом (числа в shell — это тоже строки, но для арифметики есть специальный синтаксис)\nCOUNTER=10\n",[29,1390,1391,1396,1406,1410,1415,1434,1451,1455,1460],{"__ignoreMap":139},[143,1392,1393],{"class":145,"line":146},[143,1394,1395],{"class":149},"# Простое объявление\n",[143,1397,1398,1401,1403],{"class":145,"line":153},[143,1399,1400],{"class":274},"GREETING",[143,1402,278],{"class":270},[143,1404,1405],{"class":159},"\"Привет, мир!\"\n",[143,1407,1408],{"class":145,"line":163},[143,1409,167],{"emptyLinePlaceholder":166},[143,1411,1412],{"class":145,"line":170},[143,1413,1414],{"class":149},"# Можно присвоить результат команды (используем команду substitution)\n",[143,1416,1417,1420,1422,1425,1428,1431],{"class":145,"line":176},[143,1418,1419],{"class":274},"CURRENT_DATE",[143,1421,278],{"class":270},[143,1423,1424],{"class":274},"$(",[143,1426,1427],{"class":179},"date",[143,1429,1430],{"class":159}," +%Y-%m-%d",[143,1432,1433],{"class":274},")\n",[143,1435,1436,1439,1441,1443,1445,1448],{"class":145,"line":188},[143,1437,1438],{"class":274},"USER_HOME",[143,1440,278],{"class":270},[143,1442,1424],{"class":274},[143,1444,1356],{"class":156},[143,1446,1447],{"class":274}," $HOME) ",[143,1449,1450],{"class":149},"# $HOME — уже существующая системная переменная\n",[143,1452,1453],{"class":145,"line":193},[143,1454,167],{"emptyLinePlaceholder":166},[143,1456,1457],{"class":145,"line":199},[143,1458,1459],{"class":149},"# Пример с числом (числа в shell — это тоже строки, но для арифметики есть специальный синтаксис)\n",[143,1461,1462,1465,1467],{"class":145,"line":321},[143,1463,1464],{"class":274},"COUNTER",[143,1466,278],{"class":270},[143,1468,1469],{"class":159},"10\n",[234,1471,1472],{},[22,1473,238,1474,1476,1477,1479],{},[26,1475,241],{}," Всегда заключайте значение в кавычки (",[29,1478,527],{},"), особенно если оно содержит пробелы или специальные символы. Это предотвратит ошибки интерпретации.",[17,1481,1483],{"id":1482},"шаг-2-чтение-и-использование-значения","Шаг 2: Чтение и использование значения",[22,1485,1486,1487,1489,1490,232],{},"Чтобы получить значение переменной, поставьте перед её именем символ доллара ",[29,1488,444],{},". Для сложных случаев (например, чтобы отделить имя переменной от последующего текста) используйте фигурные скобки ",[29,1491,1492],{},"${}",[134,1494,1496],{"className":136,"code":1495,"language":138,"meta":139,"style":139},"# Простое чтение\necho $GREETING\n# Вывод: Привет, мир!\n\n# Использование в строке с ${}\necho \"Сегодня: ${CURRENT_DATE}, пользователь: $USER\"\n# Вывод: Сегодня: 2026-02-17, пользователь: fixpedia\n\n# Конкатенация (сложение строк)\nPATH_SUFFIX=\"/myapp/bin\"\nFULL_PATH=\"/usr/local\"$PATH_SUFFIX\necho $FULL_PATH\n# Вывод: /usr/local/myapp/bin\n\n# Использование в команде\nLIST_FILE=\"filelist.txt\"\nwc -l $LIST_FILE\n",[29,1497,1498,1503,1510,1515,1519,1524,1541,1546,1550,1555,1565,1578,1585,1590,1594,1600,1611],{"__ignoreMap":139},[143,1499,1500],{"class":145,"line":146},[143,1501,1502],{"class":149},"# Простое чтение\n",[143,1504,1505,1507],{"class":145,"line":153},[143,1506,1356],{"class":156},[143,1508,1509],{"class":274}," $GREETING\n",[143,1511,1512],{"class":145,"line":163},[143,1513,1514],{"class":149},"# Вывод: Привет, мир!\n",[143,1516,1517],{"class":145,"line":170},[143,1518,167],{"emptyLinePlaceholder":166},[143,1520,1521],{"class":145,"line":176},[143,1522,1523],{"class":149},"# Использование в строке с ${}\n",[143,1525,1526,1528,1531,1533,1536,1539],{"class":145,"line":188},[143,1527,1356],{"class":156},[143,1529,1530],{"class":159}," \"Сегодня: ${",[143,1532,1419],{"class":274},[143,1534,1535],{"class":159},"}, пользователь: ",[143,1537,1538],{"class":274},"$USER",[143,1540,539],{"class":159},[143,1542,1543],{"class":145,"line":193},[143,1544,1545],{"class":149},"# Вывод: Сегодня: 2026-02-17, пользователь: fixpedia\n",[143,1547,1548],{"class":145,"line":199},[143,1549,167],{"emptyLinePlaceholder":166},[143,1551,1552],{"class":145,"line":321},[143,1553,1554],{"class":149},"# Конкатенация (сложение строк)\n",[143,1556,1557,1560,1562],{"class":145,"line":326},[143,1558,1559],{"class":274},"PATH_SUFFIX",[143,1561,278],{"class":270},[143,1563,1564],{"class":159},"\"/myapp/bin\"\n",[143,1566,1567,1570,1572,1575],{"class":145,"line":332},[143,1568,1569],{"class":274},"FULL_PATH",[143,1571,278],{"class":270},[143,1573,1574],{"class":159},"\"/usr/local\"",[143,1576,1577],{"class":274},"$PATH_SUFFIX\n",[143,1579,1580,1582],{"class":145,"line":607},[143,1581,1356],{"class":156},[143,1583,1584],{"class":274}," $FULL_PATH\n",[143,1586,1587],{"class":145,"line":615},[143,1588,1589],{"class":149},"# Вывод: /usr/local/myapp/bin\n",[143,1591,1592],{"class":145,"line":640},[143,1593,167],{"emptyLinePlaceholder":166},[143,1595,1597],{"class":145,"line":1596},15,[143,1598,1599],{"class":149},"# Использование в команде\n",[143,1601,1603,1606,1608],{"class":145,"line":1602},16,[143,1604,1605],{"class":274},"LIST_FILE",[143,1607,278],{"class":270},[143,1609,1610],{"class":159},"\"filelist.txt\"\n",[143,1612,1614,1617,1620],{"class":145,"line":1613},17,[143,1615,1616],{"class":179},"wc",[143,1618,1619],{"class":156}," -l",[143,1621,1622],{"class":274}," $LIST_FILE\n",[17,1624,1626],{"id":1625},"шаг-3-экспорт-переменных-сделать-видимой-для-других-программ","Шаг 3: Экспорт переменных (сделать видимой для других программ)",[22,1628,1629,1630,1633],{},"По умолчанию переменная существует только в текущей оболочке. Чтобы она стала ",[26,1631,1632],{},"переменной окружения"," (environment variable) и была доступна для любых программ и скриптов, запускаемых из этой оболочки, её нужно экспортировать.",[134,1635,1637],{"className":136,"code":1636,"language":138,"meta":139,"style":139},"# 1. Объявить\nMY_APP_CONFIG=\"/etc/myapp/config.conf\"\n# 2. Экспортировать\nexport MY_APP_CONFIG\n\n# Проверить, что переменная окружения\nenv | grep MY_APP_CONFIG\n# Вывод: MY_APP_CONFIG=/etc/myapp/config.conf\n\n# Теперь любой скрипт или программа, запущенная из этого терминала,\n# сможет прочитать $MY_APP_CONFIG.\n",[29,1638,1639,1644,1654,1659,1666,1670,1675,1687,1692,1696,1701],{"__ignoreMap":139},[143,1640,1641],{"class":145,"line":146},[143,1642,1643],{"class":149},"# 1. Объявить\n",[143,1645,1646,1649,1651],{"class":145,"line":153},[143,1647,1648],{"class":274},"MY_APP_CONFIG",[143,1650,278],{"class":270},[143,1652,1653],{"class":159},"\"/etc/myapp/config.conf\"\n",[143,1655,1656],{"class":145,"line":163},[143,1657,1658],{"class":149},"# 2. Экспортировать\n",[143,1660,1661,1663],{"class":145,"line":170},[143,1662,674],{"class":270},[143,1664,1665],{"class":274}," MY_APP_CONFIG\n",[143,1667,1668],{"class":145,"line":176},[143,1669,167],{"emptyLinePlaceholder":166},[143,1671,1672],{"class":145,"line":188},[143,1673,1674],{"class":149},"# Проверить, что переменная окружения\n",[143,1676,1677,1679,1682,1685],{"class":145,"line":193},[143,1678,1367],{"class":179},[143,1680,1681],{"class":270}," |",[143,1683,1684],{"class":179}," grep",[143,1686,1665],{"class":159},[143,1688,1689],{"class":145,"line":199},[143,1690,1691],{"class":149},"# Вывод: MY_APP_CONFIG=/etc/myapp/config.conf\n",[143,1693,1694],{"class":145,"line":321},[143,1695,167],{"emptyLinePlaceholder":166},[143,1697,1698],{"class":145,"line":326},[143,1699,1700],{"class":149},"# Теперь любой скрипт или программа, запущенная из этого терминала,\n",[143,1702,1703],{"class":145,"line":332},[143,1704,1705],{"class":149},"# сможет прочитать $MY_APP_CONFIG.\n",[22,1707,1708],{},"Можно объявить и экспортировать переменную одной командой:",[134,1710,1712],{"className":136,"code":1711,"language":138,"meta":139,"style":139},"export API_KEY=\"secret123\"\n",[29,1713,1714],{"__ignoreMap":139},[143,1715,1716,1718,1721,1723],{"class":145,"line":146},[143,1717,674],{"class":270},[143,1719,1720],{"class":274}," API_KEY",[143,1722,278],{"class":270},[143,1724,1725],{"class":159},"\"secret123\"\n",[17,1727,1729],{"id":1728},"шаг-4-специальные-типы-переменных","Шаг 4: Специальные типы переменных",[124,1731,1733,1734,1737],{"id":1732},"_41-только-для-чтения-readonly","4.1. Только для чтения (",[29,1735,1736],{},"readonly",")",[22,1739,1740],{},"После объявления такой переменной её значение нельзя изменить или удалить. Полезно для констант.",[134,1742,1744],{"className":136,"code":1743,"language":138,"meta":139,"style":139},"readonly APP_VERSION=\"2.1.0\"\nAPP_VERSION=\"3.0.0\" # Ошибка! bash: APP_VERSION: readonly variable\n",[29,1745,1746,1758],{"__ignoreMap":139},[143,1747,1748,1750,1753,1755],{"class":145,"line":146},[143,1749,1736],{"class":270},[143,1751,1752],{"class":274}," APP_VERSION",[143,1754,278],{"class":270},[143,1756,1757],{"class":159},"\"2.1.0\"\n",[143,1759,1760,1763,1765,1768],{"class":145,"line":153},[143,1761,1762],{"class":274},"APP_VERSION",[143,1764,278],{"class":270},[143,1766,1767],{"class":159},"\"3.0.0\"",[143,1769,1770],{"class":149}," # Ошибка! bash: APP_VERSION: readonly variable\n",[124,1772,1774,1775,1737],{"id":1773},"_42-локальные-переменные-в-функциях-local","4.2. Локальные переменные в функциях (",[29,1776,1777],{},"local",[22,1779,1780,1781,1783],{},"Внутри функции (или скрипта) переменная, объявленная как ",[29,1782,1777],{},", видна только внутри этой функции/скрипта и не затирает глобальную переменную с таким же именем.",[134,1785,1787],{"className":136,"code":1786,"language":138,"meta":139,"style":139},"GLOBAL_VAR=\"я глобальная\"\n\nmy_function() {\n    local GLOBAL_VAR=\"я локальная\"\n    echo \"Внутри функции: $GLOBAL_VAR\"\n}\nmy_function\necho \"Снаружи функции: $GLOBAL_VAR\"\n\n# Вывод:\n# Внутри функции: я локальная\n# Снаружи функции: я глобальная\n",[29,1788,1789,1799,1803,1810,1823,1836,1840,1845,1856,1860,1865,1870],{"__ignoreMap":139},[143,1790,1791,1794,1796],{"class":145,"line":146},[143,1792,1793],{"class":274},"GLOBAL_VAR",[143,1795,278],{"class":270},[143,1797,1798],{"class":159},"\"я глобальная\"\n",[143,1800,1801],{"class":145,"line":153},[143,1802,167],{"emptyLinePlaceholder":166},[143,1804,1805,1808],{"class":145,"line":163},[143,1806,1807],{"class":179},"my_function",[143,1809,510],{"class":274},[143,1811,1812,1815,1818,1820],{"class":145,"line":170},[143,1813,1814],{"class":270},"    local",[143,1816,1817],{"class":274}," GLOBAL_VAR",[143,1819,278],{"class":270},[143,1821,1822],{"class":159},"\"я локальная\"\n",[143,1824,1825,1828,1831,1834],{"class":145,"line":176},[143,1826,1827],{"class":156},"    echo",[143,1829,1830],{"class":159}," \"Внутри функции: ",[143,1832,1833],{"class":274},"$GLOBAL_VAR",[143,1835,539],{"class":159},[143,1837,1838],{"class":145,"line":188},[143,1839,544],{"class":274},[143,1841,1842],{"class":145,"line":193},[143,1843,1844],{"class":179},"my_function\n",[143,1846,1847,1849,1852,1854],{"class":145,"line":199},[143,1848,1356],{"class":156},[143,1850,1851],{"class":159}," \"Снаружи функции: ",[143,1853,1833],{"class":274},[143,1855,539],{"class":159},[143,1857,1858],{"class":145,"line":321},[143,1859,167],{"emptyLinePlaceholder":166},[143,1861,1862],{"class":145,"line":326},[143,1863,1864],{"class":149},"# Вывод:\n",[143,1866,1867],{"class":145,"line":332},[143,1868,1869],{"class":149},"# Внутри функции: я локальная\n",[143,1871,1872],{"class":145,"line":607},[143,1873,1874],{"class":149},"# Снаружи функции: я глобальная\n",[17,1876,1878],{"id":1877},"шаг-5-просмотр-и-удаление-переменных","Шаг 5: Просмотр и удаление переменных",[34,1880,1881,1889,1900],{},[37,1882,1883,1886,1887],{},[26,1884,1885],{},"Просмотр всех переменных"," (локальных и окружения): ",[29,1888,1364],{},[37,1890,1891,1894,1895,228,1897],{},[26,1892,1893],{},"Просмотр только переменных окружения",": ",[29,1896,1367],{},[29,1898,1899],{},"printenv",[37,1901,1902,1894,1905,1908],{},[26,1903,1904],{},"Удаление переменной",[29,1906,1907],{},"unset ИМЯ_ПЕРЕМЕННОЙ",[134,1909,1911],{"className":136,"code":1910,"language":138,"meta":139,"style":139},"unset GREETING\necho $GREETING # Вывод пустой строки\n",[29,1912,1913,1920],{"__ignoreMap":139},[143,1914,1915,1917],{"class":145,"line":146},[143,1916,1361],{"class":156},[143,1918,1919],{"class":159}," GREETING\n",[143,1921,1922,1924,1927],{"class":145,"line":153},[143,1923,1356],{"class":156},[143,1925,1926],{"class":274}," $GREETING ",[143,1928,1929],{"class":149},"# Вывод пустой строки\n",[802,1931],{},[17,1933,1935],{"id":1934},"шаг-6-работа-со-встроенными-и-специальными-переменными","Шаг 6: Работа со встроенными и специальными переменными",[22,1937,1938],{},"Оболочка предоставляет множество полезных встроенных переменных. Вот ключевые:",[1940,1941,1942,1959],"table",{},[1943,1944,1945],"thead",{},[1946,1947,1948,1953,1956],"tr",{},[1949,1950,1952],"th",{"align":1951},"left","Переменная",[1949,1954,1955],{"align":1951},"Значение",[1949,1957,1958],{"align":1951},"Пример использования",[1960,1961,1962,1978,1994,2012,2027,2042,2057,2071,2086],"tbody",{},[1946,1963,1964,1970,1973],{},[1965,1966,1967],"td",{"align":1951},[29,1968,1969],{},"$?",[1965,1971,1972],{"align":1951},"Код возврата последней выполненной команды (0 = успех)",[1965,1974,1975],{"align":1951},[29,1976,1977],{},"if [ $? -eq 0 ]; then echo \"OK\"; fi",[1946,1979,1980,1985,1988],{},[1965,1981,1982],{"align":1951},[29,1983,1984],{},"$#",[1965,1986,1987],{"align":1951},"Количество аргументов, переданных скрипту/функции",[1965,1989,1990,1991],{"align":1951},"Внутри скрипта: ",[29,1992,1993],{},"echo \"Аргументов: $#\"",[1946,1995,1996,2004,2007],{},[1965,1997,1998,112,2001],{"align":1951},[29,1999,2000],{},"$@",[29,2002,2003],{},"$*",[1965,2005,2006],{"align":1951},"Все аргументы, переданные скрипту/функции",[1965,2008,2009],{"align":1951},[29,2010,2011],{},"for arg in \"$@\"; do ...; done",[1946,2013,2014,2019,2022],{},[1965,2015,2016],{"align":1951},[29,2017,2018],{},"$0",[1965,2020,2021],{"align":1951},"Имя самого скрипта или оболочки",[1965,2023,2024],{"align":1951},[29,2025,2026],{},"echo \"Запущен скрипт: $0\"",[1946,2028,2029,2034,2037],{},[1965,2030,2031],{"align":1951},[29,2032,2033],{},"$$",[1965,2035,2036],{"align":1951},"PID (идентификатор процесса) текущей оболочки",[1965,2038,2039],{"align":1951},[29,2040,2041],{},"echo \"Мой PID: $$\"",[1946,2043,2044,2049,2052],{},[1965,2045,2046],{"align":1951},[29,2047,2048],{},"$!",[1965,2050,2051],{"align":1951},"PID последнего фонового процесса",[1965,2053,2054],{"align":1951},[29,2055,2056],{},"sleep 10 & echo $!",[1946,2058,2059,2063,2066],{},[1965,2060,2061],{"align":1951},[29,2062,710],{},[1965,2064,2065],{"align":1951},"Домашний каталог текущего пользователя",[1965,2067,2068],{"align":1951},[29,2069,2070],{},"cd $HOME",[1946,2072,2073,2078,2081],{},[1965,2074,2075],{"align":1951},[29,2076,2077],{},"$PWD",[1965,2079,2080],{"align":1951},"Текущий рабочий каталог",[1965,2082,2083],{"align":1951},[29,2084,2085],{},"echo \"Вы находитесь в: $PWD\"",[1946,2087,2088,2092,2095],{},[1965,2089,2090],{"align":1951},[29,2091,716],{},[1965,2093,2094],{"align":1951},"Список каталогов, где система ищет исполняемые файлы",[1965,2096,2097],{"align":1951},[29,2098,2099],{},"echo $PATH",[17,2101,807],{"id":806},[72,2103,2104,2110,2116,2126,2132],{},[37,2105,2106,2107,232],{},"Создайте переменную: ",[29,2108,2109],{},"TEST_VAR=\"success\"",[37,2111,2112,2113,232],{},"Экспортируйте её: ",[29,2114,2115],{},"export TEST_VAR",[37,2117,2118,2119,2122,2123,232],{},"Запустите дочерний процесс (например, новый под-терминал или скрипт), который выводит ",[29,2120,2121],{},"echo $TEST_VAR",". Вы должны увидеть ",[29,2124,2125],{},"success",[37,2127,2128,2129,232],{},"Удалите переменную: ",[29,2130,2131],{},"unset TEST_VAR",[37,2133,2134],{},"Повторите шаг 3 — вывод должен быть пустым.",[17,2136,866],{"id":865},[34,2138,2139,2158,2171,2186,2199],{},[37,2140,2141,2148,2149,2151,2152,990,2155,232],{},[26,2142,2143,2144,2147],{},"Ошибка ",[29,2145,2146],{},"command not found"," при присваивании."," Причина: пробелы вокруг ",[29,2150,278],{},". Решение: ",[29,2153,2154],{},"VAR=value",[29,2156,2157],{},"VAR = value",[37,2159,2160,2163,2164,2166,2167,2170],{},[26,2161,2162],{},"Переменная не видна в скрипте."," Причина: вы не экспортировали её (",[29,2165,674],{},"). Решение: используйте ",[29,2168,2169],{},"export VAR"," перед запуском скрипта или объявите внутри скрипта.",[37,2172,2173,2176,2177,2179,2180,228,2183,232],{},[26,2174,2175],{},"Пустое значение при чтении."," Причина: переменная не была объявлена, была удалена (",[29,2178,1361],{},") или её имя написано с ошибкой (регистр имеет значение!). Решение: проверьте имя командой ",[29,2181,2182],{},"echo $ИМЯ",[29,2184,2185],{},"env | grep ИМЯ",[37,2187,2188,2191,2192,228,2195,2198],{},[26,2189,2190],{},"Проблемы с пробелами и спецсимволами."," Причина: значение не заключено в кавычки. Решение: всегда используйте ",[29,2193,2194],{},"VAR=\"значение с пробелом\"",[29,2196,2197],{},"VAR='значение с $спецсимволом'"," (одинарные кавычки отключают подстановку).",[37,2200,2201,2207,2208,2210,2211,2213],{},[26,2202,2203,2206],{},[29,2204,2205],{},"readonly variable"," при попытке изменения."," Причина: переменная была объявлена как ",[29,2209,1736],{},". Решение: создайте новую переменную с другим именем или не используйте ",[29,2212,1736],{}," для тех, что нужно менять.",[1049,2215,2216],{},"html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":139,"searchDepth":153,"depth":153,"links":2218},[2219,2220,2221,2222,2223,2224,2230,2231,2232,2233],{"id":19,"depth":153,"text":20},{"id":66,"depth":153,"text":67},{"id":1370,"depth":153,"text":1371},{"id":1482,"depth":153,"text":1483},{"id":1625,"depth":153,"text":1626},{"id":1728,"depth":153,"text":1729,"children":2225},[2226,2228],{"id":1732,"depth":163,"text":2227},"4.1. Только для чтения (readonly)",{"id":1773,"depth":163,"text":2229},"4.2. Локальные переменные в функциях (local)",{"id":1877,"depth":153,"text":1878},{"id":1934,"depth":153,"text":1935},{"id":806,"depth":153,"text":807},{"id":865,"depth":153,"text":866},"2026-02-17 11:43:00","Полное руководство по работе с переменными в Bash и других оболочках Linux. Узнайте о типах переменных, синтаксисе, примерах и лучших практиках. Пошаговые инструкции для начинающих и опытных.","15-20 мин",[2238,2241,2244,2247],{"question":2239,"answer":2240},"Как временно добавить переменную только для одной команды?","Используйте синтаксис `VAR=value command`. Например, `LANG=ru_RU.UTF-8 date`. Переменная будет доступна только для выполнения команды `date`.",{"question":2242,"answer":2243},"Чем отличается `export` от обычного присваивания?","Обычное присваивание (`VAR=value`) создаёт переменную только в текущей оболочке. `export VAR` делает её доступной для всех дочерних процессов (запускаемых из этой оболочки программ и скриптов).",{"question":2245,"answer":2246},"Как сделать переменную доступной только для чтения?","Используйте команду `readonly VAR` после её объявления. Попытка изменить такую переменную вызовет ошибку.",{"question":2248,"answer":2249},"Где хранятся системные переменные, которые видны всем пользователям?","Обычно в файлах `/etc/environment` (для всех пользователей, но без синтаксиса shell) и `/etc/profile` (с синтаксисом shell). Для текущей сессии оболочки они загружаются при входе.",[2251,2254,2257,2260,2262],{"name":2252,"text":2253},"Объявление и присвоение значения переменной","Используйте синтаксис `ИМЯ_ПЕРЕМЕННОЙ=значение` без пробелов вокруг знака `=`. Например, `MY_VAR=\"Привет, мир!\"`. Имя переменной чувствительно к регистру.",{"name":2255,"text":2256},"Чтение значения переменной","Для подстановки значения переменной в команду или строку используйте префикс `$` или `${}`. Например, `echo $MY_VAR` или `echo \"Значение: ${MY_VAR}\"`. Конструкция `${}` помогает избежать неоднозначностей.",{"name":2258,"text":2259},"Экспорт переменной в дочерние процессы","Чтобы переменная была видна в запускаемых из текущей оболочки программах и скриптах, выполните `export MY_VAR`. Можно объявить и экспортировать за один шаг: `export MY_VAR=\"значение\"`.",{"name":1904,"text":2261},"Чтобы удалить переменную из текущей оболочки, используйте `unset MY_VAR`. После этого попытка обратиться к ней вернёт пустую строку.",{"name":2263,"text":2264},"Работа с переменными окружения","Просмотрите все переменные текущей оболочки командой `set`. Только экспортированные (переменные окружения) — командой `env`. Значение конкретной переменной — `echo $VARIABLE_NAME` или `printenv VARIABLE_NAME`.","PT15M",[2267,2268,2269,2270,2271,2272,2273,2274,2275,2276],"переменные оболочки linux","bash переменные примеры","как создать переменную в linux","системные переменные linux","export переменная","работа с переменными в bash","объявление переменных shell","readonly переменная linux","local переменная bash","env переменные linux",{},[2279,2280,2281],"/guides/linux/bash-scripting-basics","/guides/linux/command-line-tips","/errors/linux/command-not-found","Гайды Linux",{"title":1326,"description":2235},"guides/linux/shell-variables","Этот гайд подробно объясняет, что такое переменные оболочки в Linux, как их создавать, изменять и использовать в командной строке и скриптах. Вы научитесь работать с пользовательскими и системными переменными, понимать их область видимости и применять их для автоматизации задач.",[1127,138,2287,2288,2289,2290,2291],"shell","скриптинг","переменные","автоматизация","terminal","bTzncOf5eBC3Uxfc-WvOgu3VVs3IIbKPtVTUwB-o7AA"]