13.1. Рекомендации по созданию файлов запуска
При создании файлов запуска думайте о пользователе. Если вы являетесь единственным пользователем компьютера, вам не о чем излишне беспокоиться, поскольку ошибки будут касаться только вас и они достаточно просты в устранении. Однако, если вы создаете файлы запуска, которые будут применяться по умолчанию для всех новых пользователей компьютера или сети, или же вы рассчитываете на то, что кто-либо скопирует такие файлы для использования на другом компьютере, ваша задача становится существенно сложнее. Если вы сделаете ошибку в файле запуска, предназначенном для десяти пользователей, вам придется исправлять ее десять раз.
При создании файлов запуска для других пользователей придерживайтесь следующих принципов.
• Простота. Старайтесь, чтобы количество файлов запуска было небольшим, сами файлы были бы маленькими, насколько это возможно, простыми для изменения и надежными. Каждый элемент в файле запуска является всего лишь еще одним компонентом, который может выйти из строя.
• Читаемость. Создавайте обширные комментарии в файлах, чтобы пользователи получили полное представление о том, что выполняет каждая часть файла.
13.2. Когда изменять файлы запуска
Прежде чем выполнить изменение в файле запуска, задайте себе вопрос, действительно ли это изменение необходимо. Вот несколько веских оснований для изменения файлов запуска.
• Необходимо изменить приглашение по умолчанию.
• Необходимо приспособить какое-либо ПО, установленное локально. Попробуйте, однако, для начала использовать сценарии обертки.
• Существующие файлы запуска неисправны.
Если в вашей системе все работает нормально, будьте осторожны. Иногда файлы запуска, используемые по умолчанию, взаимодействуют с другими файлами из каталога /etc.
И все же вы, вероятно, не стали бы читать эту главу, если вам неинтересно изменять настройки по умолчанию. Давайте разберемся, что же важно.
13.3. Элементы файла запуска оболочки
Что входит в состав файла запуска оболочки? Некоторые элементы могут показаться очевидными, например настройки пути и приглашения. Но что именно должно быть указано в качестве пути и как выглядит приемлемое приглашение? Какое количество элементов будет излишним для размещения в файле запуска?
В нескольких следующих разделах рассмотрены основы файла запуска оболочки — начиная с командного пути, приглашения, псевдонимов и заканчивая маской прав доступа.
13.3.1. Командный путь
Самой важной частью любого файла запуска является командный путь. Этот путь должен охватывать каталоги, которые содержат приложения, представляющие интерес для обычного пользователя. По меньшей мере этот путь должен содержать следующие элементы в указанном порядке:
/usr/local/bin
/usr/bin
/bin
Такой порядок гарантирует, что вы сможете переопределить стандартные команды по умолчанию с помощью локальных вариантов, расположенных в каталоге /usr/local.
В большинстве версий Linux исполняемые файлы практически для всех пакетов ПО помещаются в каталог /usr/bin. Иногда бывают исключения, например при размещении игр в каталоге /usr/games, а графических редакторов — в отдельном каталоге, поэтому сначала проверьте настройки вашей системы по умолчанию. Убедитесь также в том, что каждая из системных команд общего пользования доступна в каком-либо из перечисленных выше каталогов. Если это не так, то ваша система, вероятно, вышла из-под контроля. Не меняйте путь по умолчанию для вашей среды пользователя, чтобы подстроиться под каталог установки нового ПО. Простой способ учесть отдельные каталоги установки — использование символических ссылок в каталоге /usr/local/bin.
Многие пользователи применяют каталог bin для хранения собственных сценариев оболочки и команд, поэтому может потребоваться добавить его в самое начало пути:
$HOME/bin
примечание
По новому соглашению двоичные файлы помещают в каталог $HOME/.local/bin.
Если вам интересны системные утилиты (такие как traceroute, ping и lsmod), добавьте в путь каталоги sbin:
/usr/local/sbin
/usr/sbin
/sbin
Добавление точки (.) в путь
Есть один небольшой, но противоречивый компонент командного пути — точка. Если поместить точку (.) в пути, то это позволит запускать команды в текущем каталоге, не используя символы ./ перед именем команды. Это может оказаться удобным при написании сценариев или при компиляции программ, однако такой способ плох по двум причинам.
• Могут появиться проблемы с безопасностью. Никогда не следует помещать точку в начале пути. Вот что при этом может произойти: взломщик может поместить вирус-троян с именем ls в архив, распространяемый через Интернет. Даже если точка окажется в конце пути, вы по-прежнему будете уязвимы для таких опечаток, как sl или ks.
• Это непоследовательно и может привести к путанице. Точка в пути может означать, что поведение команды будет изменяться в соответствии с текущим каталогом.
13.3.2. Путь к страницам руководства
Традиционный путь к страницам руководства определяется с помощью переменной окружения MANPATH, однако не стоит его изменять, поскольку при этом будут перезаписаны системные настройки по умолчанию из файла /etc/manpath.config.
13.3.3. Приглашение
Опытные пользователи избегают длинных, усложненных и бесполезных приглашений. Для сравнения: многие администраторы и версии системы стремятся уместить все в приглашении по умолчанию. Ваш выбор должен отражать потребности пользователей; укажите в приглашении текущий рабочий каталог, имя хоста, а также имя пользователя, если это действительно необходимо.
Кроме того, избегайте использовать символы, которые означают что-либо важное для оболочки, например такие:
{ } = & < >
примечание
Особенно внимательно относитесь к символу >, который может привести к появлению пустых ошибочных файлов в текущем каталоге, если вы случайно скопируете и вставите часть окна оболочки (вспомните о том, что команда > перенаправляет вывод в файл).
Даже приглашение, используемое оболочкой по умолчанию, неидеально. Например, приглашение оболочки bash содержит название оболочки и номер версии.
В следующей простой настройке приглашение для оболочки bash заканчивается символом $ (традиционное приглашение оболочки csh заканчивается символом %):
PS1='\u\$ '
Вместо текущего имени пользователя используется подстановка \u (см. раздел PROMPTING («ПРИГЛАШЕНИЕ» на странице руководства bash(1))). Следующие популярные подстановки содержат:
• \h — имя хоста (в короткой форме, без имени домена);
• \! — номер в истории;
• \w — текущий каталог. Поскольку он может оказаться длинным, можно ограничить отображение только последним компонентом, указав параметр \W;
• \$ — при запуске с учетной записью обычного пользователя применяется $, для корневого пользователя — #.
13.3.4. Псевдонимы
Одной из характерных черт современной среды пользователя являются псевдонимы — это функция оболочки, которая заменяет одну строку другой перед выполнением команды. Псевдонимы могут послужить как сокращения, избавляющие от набора команд. Однако у них есть недостатки:
• передавать аргументы может оказаться затруднительно;
• они приводят к путанице. Встроенная в оболочку команда which может сказать, псевдоним ли перед вами, но она не сообщит вам, где он определен;
• они не одобряются в подоболочках и в неинтерактивных оболочках, а также не работают в других оболочках.