Настройка параметров вашей оболочки, установка времени и т.д.
Статья включает:
Предыдущий раздел описывает процесс запуска и возможности настройки операционной системы. В этом разделе обсуждаются возможности конфигурирования среды, в которую пользователь попадает после входа в систему, а также некоторые процедуры настройки, которые могут оказаться необходимыми.
Перед тем как приступить к конфигурированию начальной среды, пользователь должен понять, что происходит при входе в систему, поскольку расположение параметров, которые требуется задать, зависит от характера конфигурирования.
Пользователю следует продумать следующие вопросы:
При входе в систему запускается начальный командный интерпретатор, который указан в записи пользователя в базе данных учетных записей (см. passwd и Файл /etc/passwd). Как правило, начальным командным интерпретатором является sh, который обычно представляет собой ссылку на командный интерпретатор Korn ksh.
Когда ksh запускается как начальный командный интерпретатор, он исполняет следующие профили, если они существуют и являются исполняемыми:
/etc/profile
, а настройки, которые соответствуют конкретному пользователю – в его собственном профиле .profile
. Редактировать файл /etc/profile
может только пользователь root
.
В действительности существует третий профиль, который предназначен для командного интерпретатора. Его особенность заключается в том, что он исполняется при каждом запуске командного интерпретатора (см. раздел "Файл запуска ksh" далее в этой статье).
Домашний каталог (home directory) позволяет хранить все файлы и каталоги, которые относятся к конкретному пользователю. В домашнем каталоге удобно содержать пользовательские двоичные файлы и сценарии. Запись, которая соответствует пользователю в базе данных паролей, определяет домашний каталог ( Управление учетными записями пользователей), а переменная окружения HOME содержит его имя.
В домашнем каталоге также хранится информация, которая используется для конфигурирования среды при входе пользователя в систему. По умолчанию приложения устанавливают в домашний каталог конфигурационные файлы. Конфигурационные файлы обычно начинаются с точки (.) и запускаются при входе пользователя в систему (например, файл .profile
) или при запуске приложения (например, файл .jedrc
).
Приложения оконного окружения Photon представляют собой особый случай. Приложения, которые выполняются в оконном окружении Photon, как правило, хранят свои конфигурации в каталоге $HOME/.ph
. Если необходимо автоматически запускать какие-либо приложения вместе с оконным окружением Photon, следует поместить соответствующие команды в файл $HOME/.ph/phapps
.
Существует множество конфигурационных файлов среды. В этом разделе описано несколько наиболее полезных из них:
/etc/profile
; $HOME/.profile
; Начальный командный интерпретатор исполняет файл /etc/profile
, если этот файл существует и является исполняемым. Файл /etc/profile
задает настройки командного интерпретатора, которые применяются ко всем пользователям, поэтому его содержимое представляет интерес для системных администраторов. Чтобы отредактировать файл /etc/profile
, необходимо войти в систему как пользователь root
.
Файл /etc/profile
выполняет следующие задачи:
root
включает в себя каталоги, которые содержат системные исполняемые файлы, например, /sbin
); /etc/motd
, и дату последнего входа в систему; /tmp
, если оно еще не задано; /etc/profile.d
с помощью команды "точка" (т.е. эти сценарии запускаются не в отдельных экземплярах командного интерпретатора, а выполняются в текущем командном интерпретаторе). Более подробные сведения о команде "точка" см. в ". (dot) builtin command" в документации командного интерпретатора ksh. Если необходимо запускать определенный сценарий при каждом запуске начального командного интерпретатора любым пользователем системы, следует поместить этот сценарий в каталог /etc/profile.d
. Чтобы добавить файл в этот каталог, требуются привилегии уровня root
.
Например, если при входе любого пользователя в систему необходимо задавать глобальные переменные окружения или запускать определенные задачи, следует поместить в каталог /etc/profile.d
сценарий, который выполняет эти действия.
Если в качестве начального командного интерпретатора используется sh, то необходимо, чтобы сценарий имел расширение .sh.
Файл $HOME/.profile
запускается при каждом входе пользователя в систему после выполнения файла /etc/profile
. Если в файл .profile
вносятся изменения, то они вступают в силу только при следующем входе пользователя в систему. В файле .profile
следует задавать настройки, которые выполняются однократно или должны наследоваться всеми командными интерпретаторами.
Например, с помощью файла .profile
можно:
![]() | Псевдонимы следует создавать в профиле командного интерпретатора пользователя (см. следующий раздел), а не в файле .profile , поскольку командный интерпретатор не экспортирует псевдонимы. Если задать псевдоним в файле .profile , то он будет установлен только в командных интерпретаторах, которые запускаются как начальные с помощью параметра -l.
Не следует запускать приложения оконного окружения Photon из сценария |
Пример файла .profile
см. в приложении.
Как описано ранее, начальный командный интерпретатор выполняет определенные профили. Кроме того, можно создать профиль, который будет выполняться командным интерпретатором ksh при запуске другого командного интерпретатора независимо от того, является ли командный интерпретатор ksh начальным.
У этого профиля нет определенного имени; при запуске командного интерпретатора ksh он проверяет переменную окружения ENV. Если эта переменная существует, то командный интерпретатор ksh считывает из нее имя профиля. Чтобы задать значение переменной ENV, следует добавить в файл $HOME/.profile
строку, подобную следующей:
export ENV=$HOME/.kshrc
Пользователи часто называют упомянутый профиль именем .kshrc
, но ему можно присвоить любое другое имя. Этот файл не обязан быть исполняемым.
В профиле командного интерпретатора ksh можно задавать желаемые псевдонимы и выполнять другие действия. Например, если требуется, чтобы утилита ls всегда отображала символы, которые указывают тип файла (исполняемый файл, каталог или ссылку), следует добавить в профиль командного интерпретатора следующую строку:
alias ls="ls -F"
Любые изменения, которые вносятся в профиль, применяются к новым командным интерпретаторам, но не к их существующим экземплярам.
Пример профиля .kshrc
приводится далее.
Далее приводится пример профиля, который запускается интерпретатором ksh, если переменная окружения ENV установлена, как указано в примере файла профиля .profile:
alias rm="rm -i" alias ll="ls -l" export PS1='$(pwd) $ '
В соответствии с этим профилем выполняются следующие действия:
root
, то подсказка по умолчанию имеет вид $
); можно также изменить вторичную подсказку, установив значение для переменной окружения PS2.
Обратите внимание на то, что для выделения строки нужно использовать одинарные кавычки, а не двойные. Если указать двойные кавычки:
export PS1="$(pwd) $ "
то команда pwd будет оцениваться немедленно, потому что двойные кавычки разрешают подстановку команд. В этом случае, когда вы изменяете каталог, подсказка меняться не будет.
Многие приложения управляют своими действиями с помощью переменных окружения. Например, утилита less считывает ширину терминала или окна из переменной окружения COLUMNS, а многие утилиты записывают временные файлы в каталог, который определяется переменной окружения TMPDIR.
Запускаемый процесс наследует копию окружения своего родителя. Это означает, что если задать переменную окружения в файле .profile
, то все командные интерпретаторы и процессы унаследуют ее при условии, что определение этой переменной не будет отменено каким-либо процессом в цепочке.
Например, если пользователю принадлежит каталог с именем bin
, этот каталог можно включить в переменную окружения PATH, добавив в файл .profile
следующую строку:
export PATH=$PATH:/home/имя_пользователя/bin
Если системный администратор захочет применить это изменение ко всем пользователям, ему будет необходимо экспортировать переменные окружения из файла /etc/profile
или из сценария в каталог /etc/profile.d
. Более подробную информацию см. в разделе "Файл /etc/profile" ранее в этой статье.
Утилита login не сохраняет переменные окружения за исключением нескольких особых переменных, например PATH и TERM.
Переменная окружения PATH определяет пути для поиска команд, а переменная LD_LIBRARY_PATH — пути для поиска компоновщиком совместно используемых библиотек. Начальные значения по умолчанию переменных окружения LD_LIBRARY_PATH и PATH заданы в файле построения образа до запуска модуля procnto. Две конфигурационные строки (см. раздел "Конфигурационные строки" далее в этой статье), _CS_PATH
и _CS_LIBPATH
, принимают значения по умолчанию переменных PATH и LD_LIBRARY_PATH. Утилита login задает переменную окружения PATH с помощью строки _CS_PATH
и передает переменную PATH, а также обе конфигурационные строки, своим дочерним процессам.
Если ввести команду set или env в командном интерпретаторе, который был запущен утилитой login, переменная окружения PATH будет отображена, а переменная LD_LIBRARY_PATH — нет. Строка _CS_LIBPATH
используется для задания переменной LD_LIBRARY_PATH аналогичным образом.
Чтобы указать утилите login, какие переменные окружения следует сохранять, нужно воспользоваться файлом /etc/default/login
. Этот файл можно отредактировать, добавив в него новые переменные, например LD_LIBRARY_PATH, но изменять существующие переменные, такие как PATH и TERM, нельзя.
Если в качестве начального командного интерпретатора используется ksh, можно переопределить существующие переменные и задать новые переменные, отредактировав профили /etc/profile
и $HOME/.profile
. Все переменные окружения, которые заданы в файле /etc/profile
, заменяют определения файла /etc/default/login
, а содержимое файла $HOME/.profile
заменяет определения обоих файлов /etc/default/login
и /etc/profile
.
Более подробные сведения о конфигурационных строках см. в следующем разделе.
В дополнение к переменным окружения операционная система ЗОСРВ «Нейтрино» использует конфигурационные строки (configuration strings). Конфигурационные строки представляют собой системные переменные, которые похожи на переменные окружения, но более динамичны.
При задании переменной окружения ее новое значение действует только в текущем экземпляре командного интерпретатора и процессах, которые созданы им после задания переменной. Задание нового значения конфигурационной строки начинает действовать во всей системе немедленно.
![]() | Операционная система ЗОСРВ «Нейтрино» также поддерживает настройку конфигурационных лимитов (configurable limits) — переменных, которые хранят информацию о системе. Более подробные сведения см. Системные требования и лимиты. |
Для того чтобы получить значение конфигурируемого лимита или конфигурационной строки, можно воспользоваться POSIX-утилитой getconf. Операционная система ЗОСРВ «Нейтрино» также определяет утилиту setconf, которая отсутствует в стандарте POSIX и позволяет задавать определенные конфигурационные строки пользователю root
. Чтобы считать значение конфигурационной строки в программе, следует вызвать функцию confstr().
Имена конфигурационных строк начинаются с _CS_*
и состоят из символов верхнего регистра, хотя утилиты getconf и setconf позволяют использовать любой регистр, опускать первый символ подчеркивания или весь префикс при условии, что остальная часть имени является однозначной.
С помощью утилиты setconf можно задавать значения следующих конфигурационных строк:
![]() | При изменении конфигурационной строки _CS_HOSTNAME необходимо также изменять переменную окружения HOSTNAME. Утилита hostname всегда возвращает значение конфигурационной строки _CS_HOSTNAME . |
Самый простой способ задать часовой пояс в оконном окружении Photon — воспользоваться утилитой phlocale. Достаточно просто выбрать нужный часовой пояс, а программа phlocale выполнит все остальные действия.
Если оболочка Photon не используется, то необходимо задать переменную TZ или конфигурационную строку _CS_TIMEZONE
. Чтобы часовой пояс устанавливался при загрузке компьютера, требуется поместить эту же информацию в файл /etc/TIMEZONE
(см. описание файла /etc/system/sysinit).
![]() | Если переменная окружения TZ не установлена, система использует значение конфигурационной строки _CS_TIMEZONE . Переменная TZ включена в стандарты POSIX, а конфигурационная строка _CS_TIMEZONE реализована в операционной системе ЗОСРВ «Нейтрино». Описание, которое приведено далее, относится и к переменной окружения TZ, и к конфигурационной строке _CS_TIMEZONE . |
Различные функции, которые работают со временем, используют информацию о часовых поясах для вычисления времени относительно пояса UTC (Universal Time Coordinated, всеобщее скоординированное время, которое раньше называлось Greenwich Mean Time (GMT — время по Гринвичу)).
Как правило, время на компьютере устанавливается в соответствии с часовым поясом UTC. Если оборудование компьютера не сохраняет время автоматически, следует воспользоваться командой date.
Переменную окружения TZ можно задать с помощью утилиты env или команды командного интерпретатора export. Конфигурационная строка _CS_TIMEZONE
задается с помощью утилиты setconf. Пример:
env TZ=PST8PDTexport TZ=PST8PDTsetconf _CS_TIMEZONE PST8PDT
Переменная окружения TZ и конфигурационная строка _CS_TIMEZONE
имеют следующий формат (пробелы использованы только для удобочитаемости):
std offset dst offset, rule
Расширенный формат имеет вид:
stdoffset[dst[offset][,start[/time],end[/time]]]
Здесь:
0
до 24
, а минуты и секунды, если они указаны — от 0
до 59
. Если перед часовым поясом указан символ "-", то часовой пояс находится восточнее нулевого меридиана, иначе – западнее (в этом случае можно указать необязательный символ "+"). date/time,date/time
где первый элемент date задает дату перехода с поясного времени на летнее, а второй элемент date — дату перехода с летнего времени на поясное. Поля time определяют время перехода с одного режима времени на другой по текущему местному времени. Элемент date может иметь один из следующих форматов:
Утилита phlocale список часовых поясов берет из /etc/timezone/uc_tz_t
, но его соответствие текущему делению планеты на часовые пояса не гарантируется; часовые пояса регулируются местным законодательством стран и могут отличаться от указанных в данном файле. Аббревиатуры, обозначающие часовые пояса в данном файле, так же не являются стандартными и могут неоднозначно идентифицировать часовой пояс.
В этом разделе рассматривается несколько примеров настроек часовых поясов.
Московское время
Определение московского времени выглядит следующим образом:
MSK-4
Красноярское время
Определение часового пояса Красноярска выглядит следующим образом:
KRAT-8
Восточное время
Восточное время является часовым поясом по умолчанию. Его краткое определение имеет следующий вид:
EST5EDT
Полное определение выглядит следующим образом:
EST5EDT4,M4.1.0/02:00:00,M10.5.0/02:00:00
В этом определении явно указано, что летнее время начинается в 2 часа ночи первого (1) воскресенья (0) апреля (4) и заканчивается в 2 часа ночи последнего (5) воскресенья (0) октября (10).
Центрально-европейское время
Определение центрально-европейского времени выглядит следующим образом:
Central Europe Time-2:00
В программе переменной окружения TZ можно присвоить значение, вызвав функцию setenv() или putenv():
setenv( "TZ", "PST08PDT07,M3.2.0/2,M11.1.0/2", 1 );putenv( "TZ=PST08PDT07,M3.2.0/2,M11.1.0/2" );
Чтобы считать значение переменной TZ, следует воспользоваться функцией getenv():
char *tzvalue;...tzvalue = getenv( "TZ" );
Значение конфигурационной строки _CS_TIMEZONE
можно считать, вызвав функцию confstr():
confstr(_CS_TIMEZONE, buff, BUFF_SIZE);
или задать с помощью оператора
confstr(_CS_SET | _CS_TIMEZONE, "JST-9", 0);
Функция tzset() считывает текущее значение переменной окружения TZ или конфигурационной строки _CS_TIMEZONE
, если значение переменной TZ не определено, и задает следующие глобальные переменные:
При вызове функции ctime*(), localtime() или mktime() библиотека присваивает значение переменной tzname так же, как и при вызове функции tzset(). Это же действие выполняется, если вызывается функция strftime() с директивой Z
.
Если необходимо, чтобы при каждом запуске оконного окружения Photon запускалось какое-либо Photon-приложение, следует поместить его в файл $HOME/.ph/phapps
. Каждая команда должна располагаться на отдельной строке. Например, для запуска редактора оболочки Photon вместе с Photon следует ввести строку:
ped &
![]() | Поскольку этот файл не является сценарием командного интерпретатора, в нем не следует задавать какие-либо переменные окружения. |
Оконное окружение Photon поддерживает широкий набор типов шрифтов. В среде Photon должны работать любые шрифты стандарта Unicode.
Файлы шрифтов системы хранятся в каталоге /usr/photon/font_repository
. Этот каталог содержит следующие файлы:
*.phf
— файлы шрифтов оконного окружения Photon. Эти файлы включают в себя растровые шрифты. Каждый файл содержит информацию о шрифте одного размера и стиля; *.TTF
, *.ttf
— файлы шрифтов TrueType; *.pfr
— файлы переносимых шрифтовых ресурсов (Portable Font Resource, PFR) формата TrueDoc компании Bitstream, которые содержат хинтованные масштабируемые определения шрифтов. Каждый файл может включать в себя множество шрифтов и стилей. Эта более старая технология, которая поддерживается для обеспечения совместимости; fontdir
— каталог известных шрифтов. Каждая запись этого файла содержит имя и тип шрифта, его размер и стиль, текстовое описание семейства шрифтов и диапазон символов, которые определены в шрифте. В этом конфигурационном файле должен быть определен, как минимум, один шрифт, чтобы быть доступным приложению. Записи файла fontdir
являются статическими; их нельзя загружать динамически; fontext
— набор правил расширения для обработки пропущенных (отсутствующих) символов; fontmap
— правила подстановки шрифтов систем. Подробные сведения о формате этого файла см. в описании phfont; fontopts
— командно-строковые параметры, которые используются для вызова соответствующего сервера шрифта, по одному параметру в строке. Чтобы установить в систему новый шрифт, следует поместить файлы шрифтов в каталог font_repository
и запустить утилиту mkfontdir для создания нового файла fontdir
. Затем нужно перезапустить менеджер шрифтов, который обычно представлен разделяемым объектом, загруженным в io-graphics. При использовании отдельного сервера phfont его так же следует перезапустить.
Оконное окружение Photon позволяет вводить текст на английском и русском языках.
Чтобы указать тип используемого терминала консоли или утилите pterm, следует задать переменную окружения TERM. Каталоги, которые содержат базу данных терминалов, расположены в каталоге /usr/lib/terminfo
. Для изменения правил подстановки шрифтов в базе данных можно воспользоваться утилитами tic и infocmp.
Например, если запустить утилиту infocmp для /usr/lib/terminfo/q/qansi-m
, то для этой базы данных будет сгенерирован файл в текстовой форме, доступный для чтения человеком. Затем этот файл можно модифицировать и снова скомпилировать с помощью утилиты tic в формат базы данных. Файл /etc/termcap
обеспечивает совместимость с программами, которые используют более раннюю однофайловую модель базы данных, а не новую библиотечную модель.
Далее рассмотрены некоторые распространенные проблемы, которые могут возникнуть при конфигурировании среды.
/etc/profile.d
, не запускается. .ksh
или .sh
; #! /bin/sh
.kshrc
выполняется как сценарий, а не как сеанс терминала? .kshrc
работает в интерактивном режиме. Следующий код проверяет, задан ли этот параметр: case $- in*i*)set -o emacsexport EDITOR=viexport VISUAL=viexport PS1='`hostname -s`:`/bin/pwd` >'bind ˆ[[z=listbind ˆI=complete...esac
Параметр $-
является объединением всех односимвольных параметров, которые переданы сценарию. Более подробные сведения см. в описании ksh.
Предыдущий раздел: перейти