4.4. Установка переменных окружения

Установим хорошее окружение, создав два новых файла для оболочки bash. Когда вы зарегистрируетесь под пользователем lfs, выполните следующую команду для создания нового файла .bash_profile:

cat > ~/.bash_profile << "EOF" exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash EOF

Когда вы регистрируетесь как пользователь lfs, первоначальной оболочкой обычно является login, которая читает файл /etc/profile основной системы (возможно содержащий некоторые установки и переменные окружения) и затем .bash_profile. Команда exec env -i.../bin/bash в файле .bash_profile заменяет запущенную оболочку на новую с полностью очищенными переменными окружения, исключая переменные HOME, TERM и PS1. Это подтверждает, что нежелательные и потенциально опасные переменные окружения из основной системы не попадут в окружение сборки. Техника, примененная здесь, преследует цель подтверждения очистки переменных окружения.

Новый образец оболочки является нерегистрированной оболочкой, которая не читает файлы /etc/profile или .bash_profile, но вместо этого читает файл .bashrc. Создадим файл .bashrc:

cat > ~/.bashrc << "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL PATH EOF

Команда set +h отключает функцию запоминания bash. Запоминание обычно является полезным расширением. Вash использует hash-таблицу для запоминания полного пути к исполняемым файлам для сокращения времени поиска и отсутствия необходимости запоминания путей этих файлов. Хотя новые средства должны быть использованы так скоро, как только они будут установлены. Отключив функцию запоминания, оболочка всегда будет искать программу по пути PATH после ее запуска. Таким образом, оболочка будет находить новые установленные средства в $LFS/tools, как только они станут доступны без запоминания предыдущей версии этих программ из другого места.

Установка маски для создания файлов пользователем (umask) в 022 позволит убедиться, что вновь созданые файлы и директории будут доступны для записи только владельцу, а для чтения и выполнения любому (по умолчанию, используя системный вызов open(2), новые файлы будут создаваться с правами доступа 644 и директории с правами доступа 755).

Переменная LFS указывает на точку монтирования, которую вы выбрали для раздела LFS.

Переменная LC_ALL контролирует локализацию некоторых программ, делает вывод их сообщений зависимым от страны. Если ваша система основана на Glibc старее версии 2.2.4, установка LC_ALL в что-то отличное от “POSIX” или “C” (на протяжении этой главы) может создать проблемы при выходе-входе в среду chroot. Установив LC_ALL в “POSIX” или “C” (что аналогично) мы страхуемся от ошибок при использовании chroot.

Мы добавляем /tools/bin в начале стандартной переменной PATH, поэтому все программы, установленные в Главе 5 будут находиться оболочкой сразу после их установки. Это в комбинации с отключением запоминания ограничит риск использования старых программ из основной системы.

В конце, для получения переменных окружения, полностью подготовленных для сборки временных средств, подключим только что созданный профиль пользователя:

source ~/.bash_profile