9. Настройка
среды
Предыдущий раздел описывает
процесс запуска и возможности настройки операционной системы.
В этом разделе обсуждаются возможности конфигурирования среды,
в которую пользователь попадает после входа в систему, а также
некоторые процедуры настройки, которые могут оказаться
необходимыми.
Что происходит при входе в систему?
Перед тем как приступить к
конфигурированию начальной среды, пользователь должен понять,
что происходит при входе в систему, поскольку расположение
параметров, которые требуется задать, зависит от характера
конфигурирования. Пользователю следует продумать следующие
вопросы:
-
Должно ли это изменение применяться ко всем
пользователям или только к текущему пользователю?
-
Требуется ли выполнять некоторые действия
только при первом входе в систему
или при каждом запуске командного интерпретатора?
При входе в
систему запускается начальный командный интерпретатор,
который указан в записи пользователя в базе данных учетных
записей (см. подразд. "Файл
/etc/passwd" раздела 3). Как правило, начальным
командным интерпретатором является sh, который обычно
представляет собой ссылку на командный интерпретатор
Korn ksh.
Когда ksh запускается как
начальный командный интерпретатор, он исполняет
следующие профили, если они существуют и являются
исполняемыми:
-
/etc/profile;
-
$HOME/.profile.
Для чего нужны
два профиля? Настройки, которые
применяются ко всем пользователям, хранятся в профиле /etc/profile, а
настройки, которые соответствуют конкретному
пользователю — в его собственном профиле .profile.
Редактировать файл /etc/profile может только пользователь root.
В действительности
существует третий профиль, который предназначен для
командного интерпретатора. Его особенность заключается в
том, что он исполняется при каждом запуске командного
интерпретатора (см. разд. "Файл запуска ksh" далее
в этом разделе).
Настройка
домашнего каталога
Домашний каталог (home
directory) позволяет хранить все файлы и каталоги, которые
относятся к конкретному пользователю. В домашнем каталоге
удобно содержать пользовательские двоичные файлы и сценарии.
Запись, которая соответствует пользователю в базе данных
паролей, определяет домашний каталог (см.
разд. "Файл /etc/passwd" раздела 3), а переменная
окружения HOME содержит его имя.
В домашнем каталоге также
хранится информация, которая используется для
конфигурирования среды при входе пользователя в систему. По
умолчанию приложения устанавливают в домашний каталог
конфигурационные файлы. Конфигурационные файлы обычно
начинаются с точки (.) и запускаются при
входе пользователя в систему (например, файл .profile)
или при запуске приложения (например, файл .jedrc).
Приложения графической
оболочки Photon представляют собой особый случай.
Приложения, которые выполняются в графической оболочке
Photon, как правило, хранят свои конфигурации в каталоге $HOME/.ph. Если
необходимо автоматически запускать какие-либо приложения
вместе с графической оболочкой Photon, следует поместить
соответствующие команды в файл $HOME/.ph/phapps.
Настройка
командного интерпретатора
Существует множество
конфигурационных файлов среды. В этом разделе описано
несколько наиболее полезных из них:
Файл /etc/profile
Начальный командный интерпретатор исполняет файл /etc/profile,
если этот файл существует и является исполняемым. Файл
/etc/profile задает настройки командного интерпретатора, которые
применяются ко всем
пользователям, поэтому его содержимое представляет
интерес для системных администраторов. Чтобы
отредактировать файл /etc/profile, необходимо войти
в систему как пользователь root.
Файл /etc/profile
выполняет следующие задачи:
-
присваивает значения переменным окружения HOSTNAME, PROCESSOR и SYSNAME, если они еще не заданы;
-
добавляет надлежащие каталоги в переменную
окружения PATH (переменная PATH пользователя root
включает в себя каталоги, которые содержат системные
исполняемые файлы, например, /sbin);
-
задает маску файловых разрешений (umask)
(см. подразд. "Владение файлами и права
доступа" раздела 6);
-
отображает дату входа пользователя в систему,
"сообщение дня", которое найдено в файле /etc/motd,
и дату последнего входа в систему;
-
присваивает переменной окружения TMPDIR значение /tmp,
если оно еще не задано;
-
запускает все сценарии в каталоге /etc/profile.d
с помощью команды "точка" (т. е. эти сценарии
запускаются не в отдельных экземплярах командного
интерпретатора, а выполняются в текущем командном
интерпретаторе). Более подробные сведения о команде
"точка" см. в ". (dot) builtin command" в
документации командного интерпретатора ksh в
«Описании программы. Часть 1. Справочник по
утилитам» КПДА.10964-01 13 01.
Если необходимо
запускать определенный сценарий при каждом запуске
начального командного интерпретатора любым пользователем
системы, следует поместить этот сценарий в каталог /etc/profile.d. Чтобы
добавить файл в этот каталог, требуются привилегии
уровня root.
Например, если при входе
любого пользователя в систему необходимо задавать глобальные
переменные окружения или запускать определенные задачи,
следует поместить в каталог /etc/profile.d сценарий,
который выполняет эти действия. Если в качестве
начального командного интерпретатора используется sh, то
необходимо, чтобы сценарий имел расширение .sh.
Файл $HOME/.profile
Файл $HOME/.profile запускается
при каждом входе пользователя в систему после выполнения файла
/etc/profile. Если в файл .profile вносятся изменения, то они
вступают в силу только при
следующем входе пользователя
в систему.
В файле .profile следует
задавать настройки, которые выполняются однократно или
должны наследоваться всеми командными интерпретаторами.
Например, с помощью файла .profile можно:
-
задавать переменные окружения (см.
разд. "Переменные окружения" далее в этом
разделе);
-
запускать любые необходимые команды;
-
задавать маску файловых разрешений (см.
подразд. "Владение файлами и права доступа"
раздела 6).
Примечание. Псевдонимы следует
создавать в профиле командного интерпретатора пользователя (см. следующий раздел), а не в файле .profile, поскольку
командный интерпретатор не экспортирует псевдонимы. Если
задать псевдоним в файле .profile, то он будет
установлен только в командных интерпретаторах, которые
запускаются как начальные с помощью параметра -l.
Не следует запускать
приложения графической оболочки Photon из сценария .profile, поскольку при
его выполнении графическая оболочка Photon не работает.
Photon-приложения следует запускать из файла
$HOME/.ph/phapps.
Пример файла .profile см. в
приложении.
Файл запуска ksh
Как описано ранее, начальный
командный интерпретатор выполняет определенные профили.
Кроме того, можно создать профиль, который будет выполняться
командным интерпретатором ksh при запуске другого
командного интерпретатора независимо от того, является
ли командный интерпретатор ksh начальным.
У этого профиля нет
определенного имени; при запуске командного интерпретатора ksh он проверяет
переменную окружения ENV.
Если эта переменная существует, то командный интерпретатор ksh
считывает из нее имя профиля. Чтобы задать значение переменной
ENV, следует добавить в файл $HOME/.profile строку, подобную
следующей:
export
ENV=$HOME/.kshrc
Пользователи
часто называют упомянутый профиль именем .kshrc, но ему можно
присвоить любое другое имя. Этот файл не обязан быть
исполняемым.
В профиле командного
интерпретатора ksh можно задавать
желаемые псевдонимы и выполнять другие действия.
Например, если требуется, чтобы утилита ls всегда
отображала символы, которые указывают тип файла
(исполняемый файл, каталог или ссылку), следует добавить
в профиль командного интерпретатора следующую строку:
alias ls="ls
-F"
Любые
изменения, которые вносятся в профиль, применяются к новым
командным интерпретаторам, но не к их существующим
экземплярам.
Пример профиля .kshrc см. в приложении.
Переменные окружения
Многие приложения управляют своими
действиями с помощью переменных окружения. Например, утилита
less считывает ширину терминала или окна из
переменной окружения COLUMNS,
а многие утилиты записывают временные файлы в каталог, который
определяется переменной окружения TMPDIR
.
Запускаемый процесс
наследует копию окружения своего родителя. Это означает, что
если задать переменную окружения в файле .profile, то все
командные интерпретаторы и процессы унаследуют ее при
условии, что определение этой переменной не будет
отменено каким-либо процессом в цепочке.
Например, если пользователю
принадлежит каталог с именем bin, этот каталог можно
включить в переменную окружения PATH,
добавив в файл .profile следующую строку:
export
PATH=$PATH:/home/имя_пользователя/bin
Если системный
администратор захочет применить это изменение ко всем
пользователям, ему будет необходимо экспортировать
переменные окружения из файла /etc/profile или из
сценария в каталог /etc/profile.d. Более подробную
информацию см. в разд. "Файл /etc/profile" ранее в
этом разделе.
Задание
переменных PATH и LD_LIBRARY_PATH
Утилита 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.
Более подробные сведения о
конфигурационных строках см. в следующем разделе.
Конфигурационные строки
В дополнение к переменным
окружения операционная система QNX Neutrino использует конфигурационные
строки (configuration strings). Конфигурационные
строки представляют собой системные переменные, которые
похожи на переменные окружения, но более динамичны.
При задании переменной
окружения ее новое значение действует только в текущем
экземпляре командного интерпретатора и процессах, которые
созданы им после задания переменной. Задание нового значения
конфигурационной строки начинает действовать во всей системе
немедленно.
Примечание.
Операционная система QNX Neutrino также поддерживает
настройку конфигурационных лимитов
(configurable limits) — переменных, которые хранят
информацию о системе. Более подробные сведения см. в
разделе 21.
Для того чтобы получить
значение конфигурируемого лимита или конфигурационной
строки, можно воспользоваться POSIX-утилитой getconf. Операционная
система QNX Neutrino также определяет утилиту setconf,
которая отсутствует в стандарте POSIX и позволяет задавать
определенные конфигурационные строки пользователю root. Чтобы
считать значение конфигурационной строки в программе, следует
вызвать функцию confstr().
Имена конфигурационных строк
начинаются с _CS_ и состоят из
символов верхнего регистра, хотя утилиты getconf и
setconf позволяют использовать любой регистр, опускать
первый символ подчеркивания или весь префикс при
условии, что остальная часть имени является однозначной.
С помощью утилиты setconf можно задавать
значения следующих конфигурационных строк:
-
_CS_ARCHITECTURE — название
архитектуры системы команд;
-
_CS_DOMAIN — сетевой домен этого узла;
-
_CS_HOSTNAME — сетевое имя этого узла;
При изменении
конфигурационной строки _CS_HOSTNAME
необходимо также изменять переменную окружения HOSTNAME.
Утилита hostname всегда возвращает значение конфигурационной
строки _CS_HOSTNAME.
-
_CS_HW_SERIAL — серийный номер
оборудования;
-
_CS_HW_PROVIDER —
название производителя оборудования;
-
_CS_LIBPATH — путь по
умолчанию для размещения разделяемых объектов. Более
подробные сведения см. в разд. "Задание
переменных PATH и LD_LIBRARY_PATH" ранее в этом
разделе;
_CS_LOCALE —
название локали (набор региональных настроек, включающий в
себя такие параметры, как часовой пояс, единицы измерения
веса, наименование валюты и т. п.) (locale string);
-
_CS_MACHINE — тип оборудования, на котором
работает операционная система;
-
_CS_PATH — строка по
умолчанию для поиска системных утилит. Более подробные
сведения см. в разд. "Задание переменных PATH и
LD_LIBRARY_PATH" ранее в этом разделе;
-
_CS_RELEASE — текущий
номер выпуска (релиз) операционной системы;
-
_CS_RESOLVE — версия
файла /etc/resolv.conf (исключая доменное имя),
хранимая в оперативной памяти;
-
_CS_SRPC_DOMAIN —
защищенный RPC-домен (Remote Procedure Call,
удаленный вызов процедур);
-
_CS_SYSNAME — название
операционной системы;
-
_CS_TIMEZONE —
источник информации о часовых поясах, альтернативный
переменной окружения TZ. Более подробные сведения
см. в разд. "Задание часового пояса" далее в
этом разделе.
-
_CS_VERSION — версия
операционной системы.
Задание часового пояса
Самый простой способ задать
часовой пояс в графической оболочке Photon —
воспользоваться утилитой phlocale.
Достаточно просто выбрать нужный часовой пояс, а программа
phlocale выполнит все остальные действия.
Если графическая оболочка
Photon не используется, то необходимо задать переменную TZ или конфигурационную строку _CS_TIMEZONE. Чтобы
часовой пояс устанавливался при загрузке компьютера,
требуется поместить эту же информацию в файл
/etc/TIMEZONE (см. описание файла /etc/system/sysinit
в разделе 8).
Примечание. Если переменная окружения
TZ не установлена, система
использует значение конфигурационной строки _CS_TIMEZONE. Переменная
TZ включена в стандарты POSIX, а конфигурационная строка
_CS_TIMEZONE реализована в операционной системе QNX
Neutrino. Описание, которое приведено далее, относится и
к переменной окружения TZ, и к конфигурационной строке
_CS_TIMEZONE.
Различные функции, которые
работают со временем, используют информацию о часовых поясах
для вычисления времени относительно пояса UTC (Universal
Time Coordinated, всеобщее скоординированное время, которое
раньше называлось Greenwich Mean Time (GMT — время по
Гринвичу)).
Как правило, время на
компьютере устанавливается в соответствии с часовым поясом
UTC. Если оборудование компьютера не сохраняет время
автоматически, следует воспользоваться командой date.
Переменную окружения TZ можно задать с помощью утилиты env или команды
командного интерпретатора export. Конфигурационная
строка _CS_TIMEZONE задается с помощью утилиты setconf.
Пример:
env TZ=PST8PDT
export TZ=PST8PDT
setconf _CS_TIMEZONE PST8PDT
Переменная окружения TZ и конфигурационная строка _CS_TIMEZONE
имеют следующий формат (пробелы использованы только для
удобочитаемости):
std offset dst offset, rule
Расширенный формат имеет вид:
stdoffset[dst[offset][,start[/time],end[/time]]]
Здесь:
-
std и dst — три или более
буквы, которые обозначают поясное или летнее время.
Обязательным является только параметр std. Если опустить параметр
dst, летнее время не будет
применяться в этой локали. Разрешается использовать
буквы как в верхнем, так и в нижнем регистре. Можно
применять любые символы за исключением двоеточия (:) в
качестве первого символа, а также цифр, запятой (,),
минуса (-), плюса (+) и нуль-символа стандарта ASCII
(\0);
-
offset — величина, которую
требуется прибавить к местному времени, чтобы получить
всеобщее скоординированное время (UTC). Параметр
offset имеет следующую форму:
hh[:mm[:ss]]
Минуты (mm)
и секунды (ss) являются необязательными. Необходимо
задавать лишь часы (hh), которые могут быть указаны в
виде одной цифры.
Параметр offset,
следующий за параметром std, является обязательным.
Если параметр offset после параметра dst
опущен, то считается, что летнее время находится на один час
впереди поясного.
При задании элементов
параметра offset можно использовать одну или
несколько цифр. Значения всегда интерпретируются как
десятичные числа. Часы могут находиться в пределах от 0 до
24, а минуты и секунды, если они указаны — от 0 до 59.
Если перед часовым поясом указан символ "-", то часовой пояс
находится восточнее нулевого меридиана, иначе —
западнее (в этом случае можно указать необязательный
символ "+").
date/time,date/time
где первый элемент date задает дату перехода с
поясного времени на летнее, а второй элемент date —
дату перехода с летнего времени на поясное. Поля time
определяют время перехода с одного режима времени на другой по
текущему местному времени.
Элемент date может иметь один из следующих форматов:
-
Jn — юлианский день
n (1 х n х 365). Дни 29 февраля не
учитываются. Таким образом, в каждом году, в том
числе в високосном, 28 февраля считается днем 59, а
1 марта — днем 60. Этот формат не позволяет
явно указать дату 29 февраля;
-
n — юлианский день с отсчетом от
нуля (0 х n х 365).
Високосные годы учитываются и можно указать дату 29
февраля;
-
Mm.n.d — день d
(0 х d х 6) недели n месяца m
текущего года (1 х n х 5,
1 х m х 12; неделя 5 означает
"последний день недели d в месяце m", который может
находиться в четвертой или пятой неделе). Неделя
1 — это первая неделя, в которой имеется день
недели d. Днем с номером 0 является воскресенье.
Форматы
элементов time и offset совпадают за исключением
того, что в элементе time не разрешается указывать
первый знак ("+" или "-"). Если поле
time опущено, то используется значение по умолчанию
02:00:00.
Ограничения
Утилита phlocale список
часовых поясов берет из /etc/timezone/uc_tz_t, но его
соответствие текущему делению планеты на часовые пояса не
гарантируется; часовые пояса регулируются местным
законодательством стран и могут отличаться от указанных в
данном файле. Аббревиатуры, обозначающие часовые пояса в
данном файле, так же не являются стандартными и могут
неоднозначно идентифицировать часовой пояс.
Примеры
В этом разделе
рассматривается несколько примеров настроек часовых поясов.
Московское время
Определение московского
времени выглядит следующим образом:
MSK-4
Красноярское время
Определение часового пояса
Красноярска выглядит следующим образом:
KRAT-8
Восточное время
Восточное время является
часовым поясом по умолчанию. Его краткое определение имеет
следующий вид:
EST5EDT
-
Восточное поясное время на 5
часов опережает всеобщее скоординированное время (UTC).
К этой локали применяется как поясное, так и летнее
время.
-
По умолчанию восточное летнее время (Eastern
Daylight Time, EDT) находится на один час впереди
поясного (EDT4).
-
Если даты перехода на летнее время и обратно не
указаны, то летнее время начинается в 2 часа ночи
первого воскресенья апреля и заканчивается в 2 часа ночи
последнего воскресенья октября.
Полное определение выглядит
следующим образом:
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 не определено, и задает следующие
глобальные переменные:
-
daylight — показывает,
поддерживается ли летнее время в данной локали;
-
timezone — разница во времени между
текущим часовым поясом и всеобщим скоординированным
временем, выраженная в секундах;
-
tzname — вектор, который состоит из
двух указателей на символьные строки, содержащие имена
часовых поясов поясного и летнего времени.
При вызове
функции ctime(), ctime_r(), localtime() или mktime() библиотека присваивает
значение переменной tzname так же, как и при
вызове функции tzset(). Это же действие выполняется,
если вызывается функция strftime() с директивой %Z.
Более подробные сведения о
перечисленных функциях и переменных см. в руководстве по
библиотекам Neutrino "Library Reference".
Настройка
графической оболочки Photon
Автоматический запуск приложений
Если необходимо, чтобы при
каждом запуске графической оболочки 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
позволяет вводить текст на китайском, японском и корейском
языках. Чтобы воспользоваться этими возможностями, следует
запустить утилиту cpim (ввод на китайском
языке), vpim (ввод на японском языке) или kpim (ввод на
корейском языке). Символы этих языков можно вводить с
обычной клавиатуры в любое приложение, которое принимает
обычный текст. Более подробные сведения см. в комплекте
документации "Photon Multilingual Input".
Типы терминалов
Чтобы указать тип используемого
терминала консоли или утилите pterm, следует задать
переменную окружения TERM.
Каталоги, которые содержат базу данных терминалов, расположены в
каталоге /usr/lib/terminfo. Для изменения правил подстановки
шрифтов в базе данных можно воспользоваться утилитами tic и
infocmp.
Например, если запустить
утилиту infocmp для
/usr/lib/terminfo/q/qansi-m, то для этой базы данных
будет сгенерирован файл в текстовой форме, доступный для
чтения человеком. Затем этот файл можно модифицировать и
снова скомпилировать с помощью утилиты tic в формат базы
данных. Файл /etc/termcap обеспечивает совместимость с
программами, которые используют более раннюю
однофайловую модель базы данных, а не новую библиотечную
модель.
Устранение неполадок
Далее рассмотрены некоторые
распространенные проблемы, которые могут возникнуть при
конфигурировании среды.
Следует убедиться в том, что:
-
имя сценария имеет расширение .ksh
или .sh;
-
атрибут исполнения сценария установлен;
-
сценарий начинается со строки:
#! /bin/sh
Если на одном
разделе компьютера установлена операционная система Windows,
а на другом — QNX Neutrino, то установка часов в одной
операционной системе изменяет время в другой операционной
системе.
В QNX Neutrino аппаратные
часы обычно устанавливают по всеобщему скоординированному
времени (Universal Time Coordinated, UTC), а затем задают
часовой пояс. В Windows аппаратные часы устанавливаются по
местному времени.
Чтобы задать время, которое
является корректным для обеих операционных систем, следует
установить на аппаратных часах местное время, находясь в QNX
Neutrino. Более подробные сведения см. в описании файла /etc/system/sysinit в
разделе 8.
Если параметр i задан, то файл .kshrc
работает в интерактивном режиме. Следующий код проверяет,
задан ли этот параметр:
case $- in
*i*)
set -o emacs
export EDITOR=vi
export VISUAL=vi
export PS1='`hostname
-s`:`/bin/pwd` >'
bind ˆ[[z=list
bind ˆI=complete
...
esac
Параметр $- является объединением
всех односимвольных параметров, которые переданы
сценарию. Более подробные сведения см. в разделе
"Параметры" к описанию ksh в «Описании программы. Часть
1. Справочник по утилитам» КПДА.10964-01 13 01.
