Что такое файл.bashrc?
Unix оболочки при запуске читают .bashrc
файл и выполнить команды, записанные в нем. Что это за файл и что он выполняет?
3 ответа
На самом деле, это bash
конкретно это читает .bashrc
(а также /etc/bash.bashrc
). Есть много разных оболочек.
Страница руководства bash (от Brian Fox и Chet Ramey; также информационная страница "Файлы запуска Bash") является авторитетной ссылкой:
Когда запускается интерактивная оболочка, которая не является оболочкой входа, bash читает и выполняет команды из
~/.bashrc
, если этот файл существует. Это может быть запрещено с помощью--norc
вариант.--rcfile
опция файла заставит bash читать и выполнять команды из файла вместо~/.bashrc
,Когда bash запускается неинтерактивно, для запуска сценария оболочки, например, он ищет переменную
BASH_ENV
в среде расширяет его значение, если оно там появляется, и использует расширенное значение в качестве имени файла для чтения и выполнения. Bash ведет себя так, как будто была выполнена следующая команда:if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
но ценность
PATH
переменная не используется для поиска имени файла.
Файл просто командная оболочка. Обычно он используется для изменения приглашений, установки переменных среды и определения процедур оболочки. Традиционно, файл .profile
используется для этой цели, но bash
имеет так много расширений, что ему нужен собственный файл запуска для пользователей, которые хотят поместить bashisms в файлы запуска.
" Не оболочка входа в систему " означает такие вещи, как запуск скриптов и, как правило, запуск окон терминалов менеджерами окон. Иногда я настраиваю системы *nix, чтобы .bashrc
а также BASH_ENV
просто источник .profile
, Пока вы не отклоняетесь от команд оболочки POSIX, вы получите такую же инициализацию в любой оболочке.
Это особенно ценно, когда sh
действительно bash
, что иногда случается. Для этого используйте:
. .profile
Одна из причин, по которой все это так сложно, состоит в том, что иногда люди помещают вещи, которые производят вывод, в файлы запуска оболочки, или они безоговорочно задают приглашения. Это вызывает много проблем при запуске программ оболочки и команд backtick внутри языков, не говоря уже о system(3)
из C программ. Путь bash
Запуск, как мне кажется, предназначен для того, чтобы иметь один файл, в котором настройки вывода и приглашения в порядке, и один файл, где его нет. Традиционно, чтобы различить интерактивность, выполнялся бы тест во время выполнения, например, проверка, установлен ли запрос.
Когда Bash запускается, он выполняет команды в различных сценариях.
Когда Bash вызывается как интерактивная оболочка входа в систему, он сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.
Когда оболочка входа в систему закрывается, Bash читает и выполняет команды из файла ~/.bash_logout, если он существует.
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, Bash читает и выполняет команды из ~/.bashrc, если этот файл существует. Это может быть запрещено с помощью параметра --norc. Опция --rcfile file заставит Bash читать и выполнять команды из файла вместо ~ /.bashrc.
http://en.wikipedia.org/wiki/Bash_%28Unix_shell%29
Вот несколько хитростей и советов:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
Давайте попробуем настроить приглашение так, чтобы оно отображало сегодняшнюю дату и имя хоста:
PS1="\d \h $ "
Он должен содержать различные команды "инициализации" для вашей оболочки, например:
- Создание полезных псевдонимов (например,
alias ll='ls -l'
). - Добавление большего количества каталогов в PATH.
- Установка новых переменных среды.