Відповіді:
Власне, саме та bash
читається .bashrc
(і /etc/bash.bashrc
). Є багато різних оболонок.
Сторінка " bash man" (Брайан Фокс та Чет Рамі; також інформаційна сторінка "Файли запуску Bash" ) є авторитетною посиланням:
Коли запускається інтерактивна оболонка, яка не є оболонкою для входу, bash зчитує та виконує команди з
~/.bashrc
, якщо цей файл існує. Це може бути пригнічено за допомогою--norc
параметра. Параметр--rcfile
файлу змусить 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)
програми C. bash
Я думаю, що спосіб запуску призначений для того, щоб мати один файл, де налаштування виводу та підказок є нормальним, і один файл, де його немає. Традиційно для розрізнення інтерактивності проводиться тест часу, наприклад, перевірка, чи встановлено підказку.
Коли Bash запускається, він виконує команди в безлічі різних сценаріїв.
Коли Bash викликається як інтерактивна оболонка для входу, вона спочатку зчитує та виконує команди з файлу / etc / profile, якщо цей файл існує. Прочитавши цей файл, він шукає у такому порядку ~ / .bash_profile, ~ / .bash_login та ~ / .profile та зчитує та виконує команди з першого, який існує та читається.
Коли оболонка входу виходить, Bash зчитує та виконує команди з файлу ~ / .bash_logout, якщо він існує.
Коли запускається інтерактивна оболонка, яка не є оболонкою для входу, Bash зчитує та виконує команди з ~ / .bashrc, якщо цей файл існує. Це може бути пригнічено за допомогою параметра --norc. Параметр файлу --rcfile змусить Bash читати та виконувати команди з файлу замість ~ / .bashrc.
http://en.wikipedia.org/wiki/Bash_(Unix_shell)
Ось кілька хитрощів та порад:
http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html
Спробуємо встановити підказку, щоб вона могла відображати сьогоднішню дату та ім'я хоста:
PS1="\d \h $ "
.profile
після .bash_profile
? Будь-яка логіка?
Він повинен містити різні команди "ініціалізації" для вашої оболонки, наприклад:
alias ll='ls -l'
).ll='ls -l'
дозволяє вводити ll
для виконання ls -l
команди.