# установка приглашения, включающего идентификатор пользователя
P$1="$LOGNAME>"
Если вам непонятны некоторые из приведенных выше команд, не стоит огорчаться. Все команды описаны далее в этой книге. А к данному листингу можно вернуться в любой момент.
Рассмотрим последовательно, какие действия выполняются в приведенном листинге.
Первая строка является командой, задающей перехват двух сигналов, которые не дают пользователям возможности прервать выполнение файла с помощью нажатия клавиш [Quit] или [Ctrl+C].
Затем экспортируется значение переменной LOGNAME. В данной системе введены дополнительные справочные страницы (страницы man). Переменная MANPATH вносит их в список поиска по страницам уже имеющегося справочного руководства.
В приведенном листинге проверяется файл часового пояса и соответствующий исходный файл, если таковой существует. Затем устанавливается режим эмуляции терминала, соответствующий значению vt220.
Далее в листинге отменяется режим перехвата символов, чтобы пользователи могли отменить отображение совета дня. Однако в следующих строках листинга этот режим восстанавливается.
Затем определяется почтовое сообщение (это сообщение пользователь получает, если для него имеется новая почта).
В следующем фрагменте листинга устанавливается значение unmask, разрешающее создание файлов, для которых установлены определенные права доступа, заданные по умолчанию.
Далее инициализируются переменные среды. После установки и экспорта они становятся доступными каждому пользователю.
В следующей строке листинга восстанавливается перехват сигналов, соответствующих клавишам [Quit] или [Ctrl+C].
Затем происходит сохранение заданных по умолчанию параметров стандартного терминала stty. В результате этого при выходе пользователей из системы аудита можно повторно инициализировать параметры терминала.
Потом регистрируются все подключения пользователей в файле /var/adm/mes‑sages, который по умолчанию является журнальным файлом системы.
В следующей строке листинга выполняется команда ulimit. Она позволяет ограничить количество дампов ядра либо дампов, выполняемых в шестнадцатеричной форме.
После этого следует небольшой фрагмент кода, который дает пользователям возможность регистрироваться дважды, но только одновременно для двух пользователей. Это правило не распространяется на следующих трех пользователей: idink, psalom, dave. Остальным пользователям будет отказано в доступе, если они попытаются зарегистрироваться более двух раз.
И в завершение последняя строка файла задает вид командной строки, содержащей регистрационное имя соответствующего пользователя.
В результате описанных выше действий устанавливается среда для глобального применения. А теперь выполним ее настройку, руководствуясь профильным файлом текущего пользователя.
13.2. Пользовательский файл $НОМЕ/.profile
После выполнения файла /etc/profile пользователь попадает в собственный начальный каталог $HOME. Если вернуться к файлу passwd, то видно, что имя этого каталога находится во втором поле от конца файла.
Этот каталог действительно является исходным каталогом пользователя, поскольку именно в нем хранится вся личная информация пользователя.
Если имеется файл .profile, система использует его в качестве исходного файла. Значит, данный процесс обращается к существующему интерпретатору shell. В результате этого все существующие среды {/etc/profile) не будут изменяться под влиянием информации файла (.profile). При создании другого процесса локальные переменные интерпретатора shell фактически переписываются.
Вернемся к файлу .profile. Как правило, если учетная запись уже установлена, профильный файл в каком‑то виде уже существует. Важно помнить, что установки файла /etc/profile могут быть переопределены при добавлении в файл .profile нового элемента с другим значением либо при выполнении команды unset. Специальная настройка данного файла остается в ведении пользователя, поэтому рассмотрим стандартный файл .profile:
$ pg .profile
#.profile
set -a
MAIL=/usr/mail/$(LOGNAME:?)
PATH=$PATH export PATH
#
А теперь приступим к настройке данного файла.
Необходимо установить ряд переменных среды, подобных editor, чтобы утилита cron и другие приложения были осведомлены о применяемом редакторе. Кроме того, нас не устраивает режим эмуляции терминала vt220. Поэтому, изменим это значение на режим эмуляции терминала vt100. Это обстоятельство связано с переменной TERM.
Также можно создать каталог bin и указать его в настройках пути к своим файлам. Наличие подобного каталога желательно, поскольку именно в нем можно хранить все свои сценарии. Если же указать каталог в переменной path, можно вводить не полное имя пути к исполняемому сценарию, а лишь имя сценария.
Нужно ли, чтобы регистрационное имя отображалось в командной строке? Скорее всего, нет. Желательно, чтобы в командной строке отображался текущий каталог, а возможно, даже имя сервера используемой системы. Ниже показано, каким образом устанавливается имя базового компьютера.
$ P$1="`имя_сервера`>"
dns‑cepвep>
Или для текущего каталога, в котором вы находитесь,
$ P$1="\`pwd\`>"
\home\dave>
Если в приведенной выше командной строке возвращается слово "pwd", то вместо него воспользуйтесь командной строкой:
P$1='$PWD >';
В качестве дополнительной командной строки (которая обычно применяется при выполнении многострочной команды в командной строке) можно применять знак авторского права ©. Значение этого символа в коде ASCII равно восьмеричному числу 251, или десятичному числу 169.
$ PS2=" `echo "\251" `:"
/home/dave> while read line
©:do
©:echo $LINE
©:done
В Linux…
Для использования в echo восьмеричного значения применяется следующий синтаксис:
$ PS2="`echo -e "\251"`:"
Так как пользователи имеют доступ к параметрам администрирования системы, размещенным в каталоге /usr/admin, этот каталог следует задать в виде переменной среды. Тогда в данный каталог можно переходить с помощью команды cd.
ADMIN=/usr/adm
Кроме того, сразу же после регистрации желательно знать, сколько пользователей находится в системе. Для этого можно воспользоваться командой who или wc.
$ echo "`who | wc -l` users are on today"
19 users are on today
Итак, добавим в файл .profile все изменения. Для того чтобы возымели действие любые изменения в файле .profile или в файле /etc/profile, нужно выйти из системы, а затем повторно зарегистрироваться либо обращаться к данному файлу в качестве исходного. При этом используется следующий формат:
. /имя_пути/имя_файла
Чтобы использовать файл .profile в качестве исходного, достаточно ввести следующую команду:
$ . .profile
Если приведенный вариант не действует, можно попробовать следующий: $ . ./profile
Ниже показан измененный файл .profile.
$ pg .profile
#.profile
MAIL=/usr/mai1/${LOGNAME:?}
PATH=$PATH:$HOME:bin
#
EDITOR=vi
TERM=vt100
ADMIN=/usr/adm
P$1=" `hostname`>"
PS2=" `echo "\0251"`:"
export EDITOR TERM ADMIN PATH PS1
echo " `who | wc -l` users are on to‑day"
13.3. Применение команды stty
Команда stty позволяет установить характеристики используемого терминала. Чтобы уточнить текущие установки опций stty, примените команду stty -a.
$ stty -а
speed 9600 baud; rows 24; columns 80; line=0
intr=^C; quit=^\; erase=^?; kill=^U; eof=^D; eol=<undef>;
eol2=<undef>; start=^Q; stop=^S; susp=^Z, rprnt=^R; werase=^W;
next=^V; flush=^0; min=1, time=0;
-parenb -parodd cs8 -hupci -cstopb cread -clocal -crtscts