··#·· Добавьте дополнительные переменные в комплект, если это
··#·· необходимо для вашего сайта и ваших пользователей.
··validate "EDITOR" $EDITOR
··validate "MAILER" $MAILER
··validate "PAGER" $PAGER
··# И в заключение вывод разных сообщений, в зависимости от значения errors
··if [$errors −gt 0]; then
····echo "Errors encountered. Please notify sysadmin for help."
··else
····echo "Your environment checks out fine."
··fi
··exit 0
Как это работает
Проверки, выполняемые сценарием, не отличаются большой сложностью. Чтобы проверить допустимость всех каталогов, перечисленных в переменной PATH, сценарий перебирает их и проверяет, существуют ли они
$ echo $PATH
/bin/:/sbin:/usr/bin:/sw/bin:/usr/X11R6/bin:/usr/local/mybin
Допустимость переменных окружения оценивает функция validate()
Самый необычный аспект сценария — использование значений по умолчанию в некоторых условных выражениях и в операции извлечения подстроки из переменной. Использование значений по умолчанию в условных выражениях вы видите в блоке, начинающемся со строки
Синтаксис извлечения подстроки из переменной ${varvalue%${varvalue#?}}, используемый в строке
Если ваша версия Unix/Linux не поддерживает этот синтаксис, его можно заменить более прямолинейными проверками. Например, использовать вместо ${SHELL:?No Shell} следующие строки:
if [-z "$SHELL"]; then
··echo "No Shell" >&2; exit 1
fi
А вместо {varvalue%${varvalue#?}} — следующую строку, дающую тот же результат:
$(echo $varvalue | cut −c1)
Запуск сценария
Этот сценарий пользователи могут запускать для проверки своего окружения. Он не принимает аргументов командной строки и запускается, как показано в листинге 5.22.
Результаты
Листинг 5.22: Тестирование сценария validator
$ validator
** PATH contains invalid directory /usr/local/mybin.
** MAILER set to /usr/local/bin/elm, but I cannot find executable.
Errors encountered. Please notify sysadmin for help.
№ 44. Очистка гостевой учетной записи
Несмотря на то что по соображениям безопасности на многих сайтах запрещен вход с именем пользователя guest, кое-где такая гостевая учетная запись все еще используется (часто с легко угадываемым паролем), чтобы дать клиентам или сотрудникам из других отделов доступ к сети. Это бывает удобно, но есть одна большая проблема: когда одной учетной записью пользуется множество людей, существует опасность, что кто-то из них по неосторожности испортит ее настройки, затруднив работу тех, кто последует за ним. Такое может произойти, например, во время экспериментов с командами, при редактировании файлов