Когда оболочка вызывается интерактивно с использованием параметра —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 точно также, как и при отладке скриптов; смотрите раздел «Отладка скрипта по частям». Вы можете добавлять инструкции, например, следующим образом:
Источник
Стартовые файлы оболочки Bash
Программа оболочка /bin/bash (в дальнейшем называемая просто «оболочка») использует набор стартовых файлов для помощи создания окружения.Каждый файл имеет специфическое использование. Файлы в директории /etc обычно предоставляют глобальные установки. Если аналогичные файлы присутствуют в вашей домашней директории, то они могут заменить глобальные установки.
Интерактивнвя регистрация оболочки запускается после успешного входа, используя /bin/login, который читает файл /etc/passwd. Эта оболочка во время загрузки читает /etc/profile и его персональный эквивалент
Интерактивнвя нерегистрированная оболочка запускается из командной строки (т.е. [prompt]$ /bin/bash ) или командой /bin/su . Интерактивнвя нерегистрированная оболочка так же запускается вместе с программами терминалов, такими как xterm или konsole в графической среде. Этот тип оболочек копирует основное окружение и затем читает пользовательский файл
/.bashrc для дополнительных инструкций конфигурации.
Неинтерактивная оболочка обычно присутствует при загрузке стартовых скриптов. Она неинтерактивная потому, что она выполняет скрипт и не ожидает ввода от пользователя между выполнением команд. Для такой оболочки используется окружение только из основной оболочки.
/.bash_logout не используется для вызова оболочки. Он читается и выполняется при появлении пользователя после интерактивной регистрации.
К стандартным файлам относится /etc/bashrc, вызываемый из пользовательского
/.bashrc для системной инициализации нерегистрированных оболочек.
Для большей информации смотрите info bash — Ноды: Стартовые файлы Bash и интерактивные оболочки.
/etc/profile
Здесь приведен базовый /etc/profile. Этот файл запускается для установки некоторых помогающих функций и базовых параметров. Он описывает некоторые параметры истории команд bash и в целях безопасности убирает поддержку постоянного файла истории для пользователя roor. Он так же устанавливает вид системного приглашения. Затем он вызывает маленький скрипт в директории /etc/profile.d для предоставления большей инициализации.
Для большей информации по escape-последовательностям, которые вы можете использовать для вашего системного приглашения (т.е. переменной окружения PS1), обратитесь к info bash — Нода: Печать системного приглашения.
Директория /etc/profile.d
Теперь создадим директорию /etc/profile.d, в которой размещены индивидуальные скрипты инициализации.
/etc/profile.d/dircolors.sh
Этот скрипт использует файлы
/.dircolors и /etc/dircolors для управления цветом файлов в листинге директории. Они раскрашивают вывод таких команд, как ls —color . Разъяснение по инициализации этих файлов находится в конце этого раздела.
/etc/profile.d/extrapaths.sh
Этот скрипт добавляет некоторые полезные пути к переменным окружения PATH и PKG_CONFIG_PATH. Если хотите, вы можете раскоментировать последний раздел для размещения точки в конце вашего пути. Это позволит исполняемым файлам в текущей рабочей директории запускаться без указания ./, хотя мы предупреждаем, что обычно это связано с риском для безопасности.
/etc/profile.d/readline.sh
Этот скрипт настраивает файл конфигурации inputrc. Если пользователь не имеет индивидуальных установок, он использует глобальный файл.
/etc/profile.d/tinker-term.sh
Некоторые приложения требуют описания установки TERM для поддержки цвета.
/etc/profile.d/umask.sh
Установка значения umask важна для безопасности. Здесь права доступа для записи группы по умолчанию выключены для пользователей системы и когда имена пользователя и группы не совпадают.
/etc/profile.d/X.sh
Если X установлены, переменные PATH и PKG_CONFIG_PATH так же обновляются.
/etc/profile.d/xterm-titlebars.sh
Этот скрипт показывает пример другого пути установки системного приглашения. Обычная переменная PS1 дополнена PROMPT_COMMAND. Если переменная установлена, значение PROMPT_COMMAND выполняется как команда перед выводом каждого первичного приглашения.
/etc/profile.d/i18n.sh
Этот скрипт показывает установку некоторых переменных окружения, необходимых для поддержки различных языков. Правильная установка этих переменных даст вам:
вывод программ, транслированный на ваш язык
правильную классификацию символов в буквы, цифры и другие классы – это необходимо для Bash для работы в не английских локалях
правильный алфавитный порядок сортировки для для вашей страны
правильный размер бумажной страницы
правильный фомат денег, значения времени и даты
Замените [ll] ниже на двух-буквенный код для требуемого языка (т.е. “ ru ”) и [CC] на на двух-буквенный код страны (т.е. “ RU ”). Так же может быть необходимо указание (и это актуальная и предпочтительная форма) кодировки символов (т.е. “ koi8-r ”) после точки (так, что в результате будет “ ru_RU.koi8-r ”). Используйте следующую команду для большей информации:
Список всех локалей, поддерживаемых Glibc может быть получен запуском следующей команды:
Как только подходящие параметры локали будут определены, создайте файл /etc/profile.d/i18n.sh:
Переменная LC_ALL устанавливает одинаковое значение для всех категорий локализации. Для лучшего контроля вы можете предпочесть установку значений индивидуально для всех категорий, перечисленных в выводе команды locale .
Переменная G_FILENAME_ENCODING говорит таким приложениям, как Glib и GTK + , что имена файлов находятся по умолчанию в кодировке локали, а не в UTF -8, как предполагалось по умолчанию.
Другие значения инициализации
Другие инициализации могут быть легко добавлены в profile добавлением дополнительных скриптов в директорию /etc/profile.d.
/etc/bashrc
Это базовый /etc/bashrc. Коментарии в файле должны все вам объяснить.
/.bash_profile. Если вы хотите, чтобы каждый новый пользователь имел этот файл автоматически, просто измените вывод команды на /etc/skel/.bash_profile и проверьте права доступа после выполнения команды. Затем вы можете скопировать /etc/skel/.bash_profile в домашние директории уже имеющихся пользователей, включаяя root, и установить соответствующего владельца и группу.
/.bashrc. Коментарии и инструкции по использованию /etc/skel для .bash_profile, описанного выше, применимы и здесь но с другим конечным именем файла.
Это пустой файл
/.bash_logout, который может быть использован как временный. Заметьте, что базовый
/.bash_logout не включает команду clear. Это потому, что clear поддерживается в файле /etc/issue.
/etc/dircolors
Если вы хотите использовать возможности dircolors, то выполните следующую команду. Шаги по установке /etc/skel, описанные выше, так же могут быть использованы здесь для предоставления файла
/.dircolors при установке нового пользователя. Как раньше, просто измените имя выходного файла в следующей команде и установите права доступа, владельца и группу у созданных и/или скопированных фалов.
Если вы желаете настроить цвета, используемые для различных типов файлов, вы можете отредактировать файл /etc/dircolors. Инструкции по установке цветов находятся внутри файла.
И напоследок, Ian Macdonald написал превосходную колекцию советов и трюков для расширения окружения вашей оболочки. Вы можете прочитать их на http://www.caliban.org/bash/index.shtml .