LFS — 4.4. Настройка окружения.

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

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

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

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

cat > ~/.bashrc < < "EOF" set +h umask 022 LFS=/mnt/lfs LC_ALL=POSIX LFS_TGT=$(uname -m)-lfs-linux-gnu PATH=/tools/bin:/bin:/usr/bin export LFS LC_ALL LFS_TGT PATH EOF

Команда set +h выключает хеш-функции bash. Хеширование это простая и удобная функция bash использующая хеш-таблицу для запоминания полного пути к запускаемым файлам чтобы избежать поиска пути каждый раз при запуске файла. Тем не менее, новый инструменты могут быть использованы, как только будут установлены. Отключив функцию хеширования вы заставите оболочку искать путь каждый раз при запуске программы. Таким образом, оболочка найдет новые скомпилированные утилиты в директории $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 окружении.
Переменная LFS_TGT не ставится по умолчанию, но использует совместимое описание машины для нашей кросс-компиляции и линковки и когда мы кросс-компилируем наши временные инструменты. Больше информации содержится в секции 5.2, “Инструменты. Технические примечания”.
Установив /tools/bin в начале стандартного PATH, все программы устанавливаемые в главе 5 будут подхвачены оболочкой незамедлительно после установки. Это в сочетании с командой отключения хеширования гарантирует что никакая утилита с хост-системы не будет использована вместо той что создана и требуется в главе 5.
В конце, для получения полностью настроенной, готовой к сборке временных инструментов среды окружения, обновим только что созданный профиль пользователя:

source ~/.bash_profile

Автор: Mirivlad

Скромный труженик консоли и окошек.