Что такое файл .bashrc и для чего он нужен?


21

Я не могу найти какой-либо четкой информации о том, что это за .bashrcфайл и что он делает точно.


Спасибо за всю помощь до сих пор. Кажется, что этот скрипт делает все от раскраски, завершения, псевдонимов и истории оболочки и т. Д. Есть ли что-то, что не кажется полезным?


4
.bashrcявляется одним из многих файлов конфигурации bash. Смотрите официальную документацию по Bash Startup Files .
Муру

Ответы:


21

.bashrcФайл представляет собой скрипт , который выполняется всякий раз , когда новый терминал сеанс запускается в интерактивном режиме . Это то, что происходит, когда вы открываете новое окно терминала, нажимая Ctrl+ Alt+ T, или просто открываете новую вкладку терминала.

В отличие от терминальной сессии в режиме входа в систему вам будет предложено ввести имя пользователя и пароль и выполнить ~/.bash_profileсценарий. Это то, что происходит, например, когда вы входите в удаленную систему через SSH.

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

Вы можете настроить .bashrcпо своему вкусу. Здесь вы можете получить пример со многими дополнительными функциями.


Ссылка не работает.
Раб

1
Ссылка работает.
Луис де Соуза

На этой странице файл загрузки не работает.
Раб

1
И ссылка, и загрузка работают отлично
М. Бесерра

5

Вопрос по суперпользователю - что такое файл .bashrc? @pineapple и ответ @DigitalRoss

На самом деле, это bashименно то, что читает .bashrc/etc/bash.bashrc). Есть много разных оболочек.

Страница Баша людей (Брайан Фокс и Чет Рэй, также информационная страница «Bash Startup Files» ) является авторитетным справочной:

Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды ~/.bashrc, если этот файл существует. Это может быть запрещено с помощью --norcопции. Опция --rcfilefile заставит bash читать и выполнять команды из файла вместо ~/.bashrc.

Когда bash запускается неинтерактивно, например, для запуска сценария оболочки он ищет переменную BASH_ENVв среде, расширяет ее значение, если оно там появляется, и использует расширенное значение в качестве имени файла для чтения и выполнения. Bash ведет себя так, как будто была выполнена следующая команда:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi  

но значение PATHпеременной не используется для поиска имени файла.

Файл просто командная оболочка. Обычно он используется для изменения приглашений, установки переменных среды и определения процедур оболочки. Традиционно, файл .profileиспользуется для этой цели, но bashимеет так много расширений, что ему нужен собственный файл запуска для пользователей, которые хотят помещать ошибки в файлы запуска.

« Не оболочка входа в систему » означает такие вещи, как запуск скриптов и, как правило, запуск окон терминалов менеджерами окон. Иногда я настраиваю системы * nix, чтобы иметь .bashrcи BASH_ENVпросто исходить .profile. Пока вы не отклоняетесь от команд оболочки POSIX, вы получите такую ​​же инициализацию в любой оболочке.

Это особенно ценно, когда shэто действительно так bash, что иногда случается. Для этого используйте:

. .profile

Одна из причин, по которой все это так сложно, состоит в том, что иногда люди помещают вещи, которые производят вывод, в файлы запуска оболочки, или они безоговорочно задают приглашения. Это вызывает много проблем при запуске программ оболочки и команд backtick внутри языков, не говоря уже о system(3)программах на Си. bashЯ думаю, что способ запуска спроектирован так, чтобы иметь один файл, в котором настройки вывода и приглашения в порядке, и один файл, в котором это не так. Традиционно, чтобы различить интерактивность, выполнялся бы тест во время выполнения, например, проверка, установлен ли запрос.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.