Как создать файл bashrc

Обновлено: 06.07.2024

Недавно я столкнулся со следующей проблемой: приложение не сохраняло настройку umask , заданную в профиле root-пользователя, или в файле /etc/profile . Немного разобравшись в вопросе, я понял, что приложение использует только ту настройку umask , которая задана в /etc/bashrc , не принимая даже те значения, которые являются его же собственными сценариями запуска.

Немного изучив вопрос, я понял, какую функцию выполняют эти файлы, чем они различаются и как они выполняются. Такой вопрос поднимается не часто, поэтому я подумал, что будет полезно рассказать о нем вам.

Для чего нужен файл /etc/profile?

Если вы используете Linux, то вам наверняка знакомы файлы .profile или .bash_profile , размещенные в вашем домашнем каталоге. Эти файлы используются для задания элементов окружения для оболочки пользователя. Таких элементов, как, например, umask , и таких переменных, как PS1 или PATH .

Файл /etc/profile не очень-то отличается от этих файлов. Он используется для задания общесистемных переменных окружения в оболочках пользователя. Иногда это те же переменные, что и в .bash_profile , но этот файл используется для задания первоначальных PATH или PS1 для всех пользователей оболочек системы.

/etc/profile.d

Помимо задания элементов окружения, файл /etc/profile выполняет сценарии внутри /etc/profile.d/*.sh . Если вы хотите задать свои собственные переменные окружения для всей системы, вам следует поместить свою конфигурацию в сценарий оболочки в /etc/profile.d .

Для чего нужен файл /etc/bashrc?

Помимо .bash_profile , в своем домашнем каталоге вы также часто будете встречать файл .bashrc . Этот файл предназначен для задания псевдонимов команд и функций, используемых пользователями оболочки bash.

Аналогично тому, как /etc/profile является общесистемной версией .bash_profile , файл /etc/bashrc в Red Hat и файл /etc/bash.bashrc в Ubuntu являются общесистемной версией .bashrc .

Стоит отметить, что в Red Hat реализация /etc/bashrc также выполняет сценариий оболочки в /etc/profile.d , но только если пользовательская оболочка является Интерактивной оболочкой (т.е. Login Shell (стартовой оболочкой))

Когда используются эти файлы?

То, когда выполняется каждый из этих файлов, зависит от типа выполняемого логина. В Linux имеется два типа стартовых оболочек (login shells) - Интерактивные оболочки и Неинтерактивные оболочки. Интерактивная оболочка используется, когда пользователь может взаимодействовать с оболочкой, т.е., например, типичное приглашение командной строки bash. Неинтерактивная оболочка используется, когда пользователь не может взаимодействовать с оболочкой, т.е. выполнение bash-сценариев.

Разница проста: файл /etc/profile выполняется только для интерактивных оболочек, а файл /etc/bashrc – как для интерактивных, так и для неинтерактивных. Вообще-то, в Ubuntu файл /etc/profile вызывает файл /etc/bashrc напрямую.

Интерактивная оболочка и неинтерактивная оболочка: Сравнение

Чтобы на примере сравнить интерактивную и неинтерактивную оболочки, я добавлю переменную в оба файла /etc/profile и /etc/bash.bashrc в своей Ubuntu.

/etc/profile

/etc/bash.bashrc

Интерактивная оболочка

Ниже приведен пример интерактивной оболочки. В этом случае были выполнены оба файла /etc/profile и /etc/bash.bashrc .

Неинтерактивная оболочка

В этом примере мы выполняем команду через оболочку SSH, которая является неинтерактивной; поскольку это неинтерактивная оболочка, выполняется только файл /etc/bash.bashrc .

Заключение

В моем случае приложение не признает значение umask , заданное в файле /etc/profile , но признает значение в файле /etc/bashrc . Это говорит о том, что подпроцесс начинается как неинтерактивная оболочка. Поскольку предлагаемый способ изменения переменных окружения заключается в добавлении сценария оболочки в /etc/profile.d , в моем случае лучше задать значение umask в файле /etc/bashrc .

Сегодня, в очередной раз разбираясь с работой в консоли Линукс я решил, для удобства немного подредактировать свой файл .bashrc Данный фаил отвечает за то что выводится на экран во время нашей работы в bash. Вообще настроек в bash существует достаточно много и я ещё не со всеми разобрался, да и не все пока разбирал. Например я пока не разбирал цветную настройку консоли. А знаю что консоль можно разукрасить практически как новогоднюю Ёлку. Но всему своё время.


Изменений в файле ".bashrc" на сегодня я хоть и сделал не так и много, но это уже позволяет значительно упростить мою работу и обучение работе с консолью.


Файл ".bashrc" находится в нашей домашней директории вот здесь

/.bashrc, как видите знак тильды указывает на то что фаил находится в Вашей домашней директории, как я это уже говорил ранее в статье, когда описывал команды для передвижения по директориям в системе Линукс, в консоли. Точка с которой начинается название файла говорит нам о том что файл скрыт. Дабы в него не лазили те кто совершенно ничего не понимают в своей операционной системе и не наделали в нем глупостей. Те же кто стремится к тому чтобы узнать о своей операционной системе больше, как и я, а так же быть не только пользователем в своей системе, но и иметь возможность сделать с неё все что угодно, всегда могут в него попасть и подредактировать. Конечно для этого необходимо знать что необходимо делать, но это уже такое, если человеку что-либо интересно со временем он узнает. Как говорится если ты что-либо делаешь один день, ты новичок. Если ты что-либо делаешь десять тысяч дней, ты уже мастер.


Что-то я в философию ударился, хорошо что когда-то было научился печатать в слепую и сейчас записываю практически с той же скоростью что и думаю. Давайте просмотрим в консоли, наш скрытый фаил. Для этого откроем его в консольном текстовом редакторе, в том который вы используете. Я лично использую консольный текстовый редактор vim, раньше потратил достаточно много времени на его изучение и мне в нем очень комфортно работать. Если он у вас установлен наберите в консоли.


Если консольный текстовый редактор vim у вас не установлен, можете воспользоваться другими например vi, либо nano ну или любым другим. Например вот так


Вот мы видим настройки с которыми работает наш bash, их мы и будем корректировать. )) Меня первый раз это слегка испугало, много всего и ничего непонятно. Затем немного почитал, ну и соответственно узнал немного больше.


Вводим вот такие строки, для того чтобы в историю вписывались все команды


Далее увеличиваем размер истории команд терминала. Для этого находим такую строку. Различаться она может лишь цифрами.


Пятьсот команд в истории чрезвычайно мало. Меняем цифру 500 на 10000. Будет выглядеть вот так.


Далее говорим терминалу чтобы не вносил в историю копии команд. Для этого добавляем вот такую строку.


Делаем так, чтобы можно было переходить в каталог без написания команды cd, просто написав путь к каталогу. Чтобы это сделать необходимо добавить вот такую строку.


Запрещаем выход из консоли если в ней есть выполняющиеся задания. Это временами бывает полезным.


Указываем терминалу исправлять мелкие ошибки в написании имен директорий, при автодополнении.


Делаем возможным использование маски. Позволяет использовать конструкцию вида ** которая обозначает все файлы, начиная с текущего каталога. Очень полезно бывает для поиска определенных файлов. Например для того чтобы просмотреть все файлы в домашнем каталоге с расширением flv мне в домашнем каталоге достаточно набрать ls **/*.flv. Так же удобно находить и другие файлы. Например свою коллекцию музыки в mp3 формате.


Вот и для начала все. То как показывать часы при запуске терминала и многое другое, я опишу в следующий раз. Как сам это окончу и решусь описать.

Проблема заключается в том, что у меня нет файла .bashrc в моем домашнем каталоге. В моем доме есть только файл .bash_history .

Если я перехожу к корню, есть файл etc/bash.bashrc , но я думаю, что он внесет изменения для всех пользователей и не только для меня. Я хочу добавить этот путь только для себя. Это не должно влиять на других. Также нет переменной $PATH в этом файле bashrc, поэтому я еще более запутан.

Не забывайте, что это скрытый файл внутри вашего домашнего каталога (вы бы не первый, кто сделал ls -l и думал его там нет).

На первой странице должен быть .bashrc . Если не просто создать его с помощью

И просто напишите в нем следующую строку.

ИЛИ Большинство дистрибутивов содержат стандартный .bashrc файл в /etc/skel/ Вы можете скопировать его в домашний каталог.

Большинство дистрибутивов содержат стандартный .bashrc файл в /etc/skel/ , вы можете просто скопировать в свой домашний каталог. В противном случае вы можете просто создать новый пустой файл .bashrc в домашнем каталоге.

Создайте свой собственный файл запуска для интерактивных оболочек

О файлах запуска Bash

В разделе INVOCATION man 1 bash говорится:

Когда запущена интерактивная оболочка, не являющаяся оболочкой входа, bash считывает и выполняет команды из /etc/bash.bashrc и

/.bashrc, если эти файлы существуют.

Обратите внимание, что эти файлы запуска необязательные ; Баш не требует их. Bash также различает оболочки входа и интерактивные оболочки. Интерактивная оболочка определяется таким образом:

Интерактивная оболочка запускается без аргументов без опций и без опции -c, стандартный ввод и ошибка которой связаны между собой к терминалам (как определено isatty (3)), или один начинается с -i вариант.

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

/.bashrc будет вызываться в вашей системе .

Создание файла запуска интерактивной оболочки для каждого пользователя

Если вам просто не нужен файл

/.bashrc для пользователя, просто создайте его. Это будет вызываться Bash для недействительных оболочек (например, оболочки запускаются без флага --login ) или всякий раз, когда вы принудительно устанавливаете оболочку интерактивно, вызывая его с помощью флага -i .

Если у вас нет кода .bashrc , вы можете просто создать его и добавить строки, которые вы хотите, например:

, чтобы добавить ваш каталог bin пользователя в конец пути.

Но вы должны быть осторожны, если есть другие файлы запуска. Правила использования файлов довольно сложны, но они подробно описаны в справочной странице bash . Введите man bash в командной строке и найдите INVOCATION .

Краткие ответы:

-maxdepth 1 -name '.bashrc' литий> vi

/.bashrc литий> echo $PATH | grep

Подробный:
Я беру более близкую литературную интерпретацию.

«Найти файл .bashrc в вашем домашнем каталоге»
Поскольку существует команда find , возможно, предательский редактор предложит вам использовать его:

Поиск в домашнем каталоге

, опускаться только на один уровень (нет subdir -maxdepth 1 ). Для всех вариантов напишите man find .
Строка ниже значения будет выполнять минимальное задание

Примечание: Если

/.bashrc не существует , вы можете его создать > с помощью простого echo >>

>> создаст файл, если он не существует. Если существует

/.bashrc , он будет добавлять только безобидный вывод пустого echo , избегая непреднамеренного удаления такого критического файла, который, кстати, трудно восстановить без резервной копии.

(Следующее потому, что редко я должен уважать смысл моего никнейма, не выполняйте, если у вас есть сомнения).

"Do vi .bashrc "
Теперь вы можете сделать vi

/.bashrc , здесь вам нужно нажать : и q для выхода!

Папка приложения и $PATH
При создании папки приложения, например.

/MyNewCoolProgramFolder , строка ниже проверяет, находится ли она в $PATH :

Вам не нужно добавлять, если он уже существует. При необходимости вы можете добавить в $PATH с

и добавить эту строку в

/.bashrc , если вы хотите сделать ее постоянной.

"4. Как 4, если было всего 3 балла?» - Методы обхода.
Для этого есть некоторые обходные пути; предположим, что исполняемый файл с именем CoolDetraveller существует только в вашей новой папке приложения:

(a) Вы можете попробовать выполнить его. Просто он не запустится, если он не находится в $PATH .

CoolDetraveller: команда не найдена

(b) Вы можете попробовать автоматическое завершение . Начните писать CoolDetravelle и нажмите Tab . Если он находится в $PATH , он будет завершен автоматически (всегда, если автозаполнение включено).

(c) Вы можете запросить команду bash shell which , если вы напишете команду CoolDetraveller

Примечание: Если на вашем пути к приложению есть одно или несколько пробелов, which не может найти CoolDetraveller , хотя (здесь я снова чтую свое прозвище) автозавершение CoolDetraveller в качестве действительного параметра команды which будет работать!

Ad nauseam : вы не можете запросить whereis CoolDetraveller , потому что whereis

имеет жестко закодированный путь, поэтому не всегда можно найти то, что вы ищете

Когда оболочка вызывается интерактивно с использованием параметра --login или когда она вызывается с помощью команды sh, командная оболочка считывает инструкции из файла /etc/profile . В этом файле обычно устанавливаются значения переменных PATH , USER , MAIL , HOSTNAME и HISTSIZE .

В некоторых системах в файле /etc/profile задается значение umask; в других системах в этом файле находятся ссылки на другие конфигурационные файлы, например:

  • на /etc/inputrc , общесистемный файл инициализации программы Readline, в котором можно настраивать реакцию клавиатуры;
  • на директорий /etc/profile.d , в котором находятся конфигурационные файлы, определяющие общую системную настройку некоторых конкретных программ.

В этом файле должны быть все настройки, которые вы хотите применить к пользовательской среде. Файл может выглядеть следующим образом:

В этом конфигурационном файле устанавливаются значения для некоторых основных переменных среды окружения, а также некоторые переменные, которые необходимы пользователю, запускающему в своем веб браузере поддержку языка Java и/или использующие Java-приложения. Смотрите раздел "Переменные".

Дополнительную информацию об условном операторе if, используемом в этом файле, смотрите в главе 7 "Условные инструкции"; в главе 9 "Повторяющиеся задания" обсуждаются циклы, использующие конструкцию for.

В исходных кодах Bash есть примеры файлов profile , предназначенные для общего или индивидуального использования. Но для того, чтобы эти файлы и пример файла, приведенный выше, работали в вашей среде, их надо модифицировать!

/etc/bashrc

В системах, имеющих несколько типов командных оболочек, настройки, касающиеся Bash, лучше поместить в этот файл, поскольку файл /etc/profile читается также и другими оболочками, например, командной оболочкой Bourne. С помощью разделения конфигурационных файлов, предназначенных для различных типов оболочек, можно предотвратить ошибки, генерируемые оболочками, не понимающими синтаксис Bash. В таких случаях пользовательский файл

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

Вы также можете обнаружить, что в файле /etc/profile в вашей системе хранятся настройки только командной оболочки и настройки программ, тогда как в файле /etc/bashrc хранятся общесистемные определения функций оболочки и алиасов. На файл /etc/bashrc/ > можно ссылаться из файла /etc/profile или из отдельных пользовательских файлов, предназначенных для инициализации командной оболочки.

В исходных кодах есть примеры файла bashrc , либо вы можете найти его копию в /usr/share/doc/bash-2.05b/startup-files . Ниже приведена часть файла bashrc , которая поставляется вместе с документацией по Bash:

Кроме алиасов общего назначения, в нем определяются алиасы, благодаря которым можно выполнять команды даже в тех случаях, когда при наборе команд делаются опечатки. Мы будем обсуждать алиасы в разделе "Создание и удаление алиасов". В этом файле есть функция pskill; функции будут подробно изучены в главе 11 "Функции".

Конфигурационные файлы индивидуальных пользователей

Первоначально у вас в вашем домашнем директории этих файлов может не быть, создайте их в случае необходимости.

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

Этот пользователь сконфигурировал использование символа Backspace для входа в другие операционные системы. Кроме того, выполняется чтение файлов .bashrc и .bash_login .

В этом файле содержатся конкретные настройки, которые обычно активируются только когда вы войдете в систему. В этом примере мы используем файл, в котором конфигурируется значение переменной umask и при входе систему показывается список подключенных пользователей. Пользователю также выдается календарь на текущий месяц:

В случае, когда отсутствует файл

/.bash_profile , будет читаться этот файл.

Если отсутствуют файлы

/.bash_login , будет читаться файл

/.profile . В него можно поместить те же конфигурационные настройки, которые затем также будут доступны в других командных оболочках. Помните, что другие командные оболочки не могут понимать синтаксис Bash.

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

/.bashrc , а поскольку на этот файл также делаются ссылки в файлах, которые читаются при входе в систему, это означает, что вам не нужно указывать одни и те же настройки в нескольких файлах.

В следующем пользовательском файле .bashrc определяется пара алиасов и после того, как будет прочитан общесистемный файл /etc/bashrc , устанавливаются значения переменных, используемых в конкретных программах:

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

Алиасы рассматриваются в разделе "Алиасы".

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

Изменение конфигурационных файлов командной оболочки

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


Рис.3.1. Различные строки приглашения для различных пользователей

Большинство скриптов выполняются в приватной среде окружения: переменные, не наследуются дочерними процессами, если они не экспортированы родительской оболочкой. Использование файла, в котором указываются команды оболочки, являются тем способом, с помощью которого вы можете применить изменения к своей собственной среде исполнения и настроить переменные для текущей командной оболочки.

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

Обратите внимание, что source resourcefile это то же самое, что и .Resourcefile .

Если вы заблудились во всех этих конфигурационных файлах и обнаружили, что столкнулись с настройками, которые вам непонятны, воспользуйтесь инструкциями echo точно также, как и при отладке скриптов; смотрите раздел "Отладка скрипта по частям". Вы можете добавлять инструкции, например, следующим образом:


Я не так уж часто пользуюсь терминалом, залезая в него в основном для мониторинга облачных серверов по ssh. Но правильно настроенный терминал способен резко повысить производительность любого разработчика или технически подкованного пользователя. Безусловно, моя конфигурация — это поверхностное решение, и с помощью Google можно найти более продвинутые варианты, в которых можно будет покопаться. Однако предложенное мной решение — это неплохой вариант для тех, кто хочет что-то изящное и не требующее много времени на установку.

Шаг 1 — Установка Alacritty


Alacritty — это быстрый кроссплатформенный эмулятор терминала. Ооочень быстрый. Это связано с тем, что он использует OpenGL для оптимизации вычислений на вашем GPU. Функция, которую имеют очень немногие эмуляторы терминала. По этой причине я настоятельно рекомендую его вместо эмулятора по умолчанию, который поставляется с вашей системой.

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

Для MacOS запустите brew install alacritty . Отсюда вы можете запускать Alacritty, как любое другое приложение в вашей системе. Если других конфигураций терминала в вашем .zshrc нет, вы должны увидеть что-то вроде этого:


Выглядит не очень, но Starship поможет это изменить.

Шаг 2 — Установка Starship

Starship — это кросс-оболочечное решение, которое не только отлично выглядит «из коробки», но и имеет огромное количество функций. Я настоятельно рекомендую почитать их документацию, потому что вы можете настроить практически каждый параметр вашей оболочки с помощью Starship.

Установить Starship можно тем же способом, что и Alacritty. Для MacOS запустите brew install starship в своём терминале.

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

Шаг 3 — Цветовые схемы оболочки

Я использую подсветку DistroTube для своих машин. Установка выполняется с помощью следующих команд:

Мы всё установили, можно создавать конфигурационный файл.

Шаг 4 — Конфигурационный файл оболочки

Здесь шаги меняются в зависимости от того, используете ли вы bash или zsh . Но в обеих инструкциях встречается что-то, называемое каталогом $HOME (также обозначаемым символом

). По умолчанию это путь /Users/username для Mac и /usr/username для Linux.

Для bash

Если вы используете bash , вам нужно открыть файл конфигурации bash или .bashrc. Запустите touch

/.bashrc , чтобы создать этот файл, и откройте его в своём любимом текстовом редакторе (например, VSCode).

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

/.bash_profile . Объедините их в один файл

/.bash_profile или удалите тот, который вам не нужен.

Добавьте внизу следующее:

Для zsh

Если вы используете zsh , вам нужно открыть файл конфигурации zsh или .zshrc . Запустите touch

/.zshrc , чтобы создать этот файл. Откройте его в своём любимом текстовом редакторе. Добавьте внизу следующее:

Шаг 5 — SpaceVim (необязательно)

Не всем нравится vim, и я это понимаю. Я был таким же, пока не попробовал SpaceVim. SpaceVim имеет все отличные плагины, стили и функции в небольшом красивом пакете, который вы устанавливаете одной строкой, и он _просто работает_. Посмотрите, как это удобно:


Установка быстрая и простая — запустите в терминале:

Вуаля, ваш vim теперь должен выглядеть так: с функциональным деревом каталогов, несколькими вкладками, разделением окон, терминалами и т. д. Я мог бы говорить о SpaceVim весь день, но вместо этого рекомендую ознакомиться с документацией и некоторыми видеороликами на YouTube, если вы хотите узнать о нём больше.

Закройте и снова откройте Alacritty. Вы должны увидеть точно такой же терминал, как у меня. Если нет, напишите мне, чтобы я попытался выяснить, что не работает, и обновить своё руководство.

Если вы хотите добавить в свою конфигурацию больше функций, лучше всего начать с поиска в google bashrc dotfiles github или zshrc dotfiles github.

Что ещё интересного есть в блоге Cloud4Y

Подписывайтесь на наш Telegram-канал, чтобы не пропустить очередную статью. Пишем не чаще двух раз в неделю и только по делу.

Читайте также: