Библиотека сайта rus-linux.net
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