Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, 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Я думаю, что способ запуска спроектирован так, чтобы иметь один файл, в котором настройки вывода и приглашения в порядке, и один файл, в котором это не так. Традиционно, чтобы различить интерактивность, выполнялся бы тест во время выполнения, например, проверка, установлен ли запрос.
Хороший ответ. Просто некоторые цитаты: файл - это просто команды оболочки. Обычно он используется для изменения приглашений, установки переменных среды и определения процедур оболочки.
smwikipedia
2
Кто-нибудь знает, что означает rc часть .bashrc / .zshrc?
Может быть, rc означает конфигурацию во время выполнения.
Майк Дин,
12
Когда Bash запускается, он выполняет команды в различных сценариях.
Когда Bash вызывается как интерактивная оболочка входа в систему, он сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.
Когда оболочка входа в систему закрывается, Bash читает и выполняет команды из файла ~ / .bash_logout, если он существует.
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, Bash читает и выполняет команды из ~ / .bashrc, если этот файл существует. Это может быть запрещено с помощью параметра --norc. Опция --rcfile file заставит Bash читать и выполнять команды из файла вместо ~ / .bashrc.
@pineapple: псевдоним - это способ запуска команды, которая может быть длинной и короткой. Например, псевдоним ll='ls -l'позволяет вводить , llчтобы выполнить ls -lкоманду.
Ответы:
На самом деле, это
bash
именно то, что читает.bashrc
(и/etc/bash.bashrc
). Есть много разных оболочек.Страница Баша людей (Брайан Фокс и Чет Рэй, также информационная страница «Bash Startup Files» ) является авторитетным справочной:
Файл просто командная оболочка. Обычно он используется для изменения приглашений, установки переменных среды и определения процедур оболочки. Традиционно файл
.profile
используется для этой цели, ноbash
имеет так много расширений, что ему нужен собственный файл запуска для пользователей, которые хотят помещать ошибки в файлы запуска.« Не оболочка входа в систему » означает такие вещи, как запуск скриптов и, как правило, запуск окон терминалов менеджерами окон. Иногда я настраиваю системы * nix, чтобы иметь
.bashrc
иBASH_ENV
просто исходить.profile
. Пока вы не отклоняетесь от команд оболочки POSIX, вы получите такую же инициализацию в любой оболочке.Это особенно ценно, когда
sh
это действительно такbash
, что иногда случается. Для этого используйте:Одна из причин, по которой все это так сложно, состоит в том, что иногда люди помещают вещи, которые производят вывод, в файлы запуска оболочки, или они безоговорочно задают приглашения. Это вызывает много проблем при запуске программ оболочки и команд backtick внутри языков, не говоря уже о
system(3)
программах на Си.bash
Я думаю, что способ запуска спроектирован так, чтобы иметь один файл, в котором настройки вывода и приглашения в порядке, и один файл, в котором это не так. Традиционно, чтобы различить интерактивность, выполнялся бы тест во время выполнения, например, проверка, установлен ли запрос.источник
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
Вот несколько хитростей и советов:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
Давайте попробуем настроить приглашение так, чтобы оно отображало сегодняшнюю дату и имя хоста:
источник
.profile
после.bash_profile
? Любая логика?Он должен содержать различные команды «инициализации» для вашей оболочки, например:
alias ll='ls -l'
).источник
ll='ls -l'
позволяет вводить ,ll
чтобы выполнитьls -l
команду.