Kodomo

Пользователь

Домашнее задание №1

Задания выполняются на kodomo. После выполнения всех заданий нужно записаться в очередь на проверку (ссылка сверху на странице курса). Дедлайн – 01:00 AM (час ночи) 3 ноября.

1. Настройка bash

Задача: настроить параметры хранения истории команд и пути поиска исполняемых файлов.

Bash использует несколько файлов конфигурации в зависимости от способа запуска. Прочитайте раздел INVOCATION на man-странице bash(1), который описывает процедуру выбора файлов. Файлы конфигурации – это обычные cценарии, которые bash исполняют при запуске. Выполнить сценарий в контексте текущего процесса можно с помощью встроенной команды (builtin) . или source. Файлы конфигурации могут использовать эту команду, чтобы включить в себя другие файлы конфигурации. Обязательно проверьте, какие из упомянутых в справке файлов существуют, и какие инструкции содержат. Только после этого получится определить, в какой из файлов лучше вносить изменения, чтобы не испортить стандартную конфигурацию.

a) Настройка истории команд

Bash хранит историю введенных в интерактивном режиме команд в файле ~/.bash_history. Ряд переменных окружения, имена которых содержат HIST, позволяют настроить этот процесс. Нужные переменные и их описание можно найти в подразделе Shell Variables раздела PARAMETERS страницы bash(1). Используйте встроенный в less поиск!

Вам надо добиться, чтобы bash

Формат вывода времени с помощью встроенной команды history выберите любой.

b) Настройка PATH

Переменная окружения PATH содержит список имен папок, разделенных двоеточиями, в которых bash ищет исполняемые файлы, соответствующие введенным командам. Подробнее в разделе COMMAND EXECUTION man-страницы bash(1). Папки просматриваются слева направо, используется первое найденное совпадение. Поэтому папки с исполняемыми файлами, которые должны предпочитаться системным при совпадении имен, должны быть в списке раньше системных папок, и наоборот.

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

2. Добавление опций команде which

Сценарий which позволяет определить, какой исполняемый файл соответствует команде с заданным именем.

Задача: добавить команде which две полезные опции. Для этого потребуется найти исполняемый файл which, скопировать его в папку ~/exe и отредактировать. Нужно будет разобраться со всеми конструкциями, содержащимися в сценарии, включая присвоения, функции, встроенные команды [, shift, getopts и составные команды while, for, case и if. Новые опции должны менять только формат выдачи, сами выдаваемые объекты должны оставаться теми же. В частности, опция -a должна сохраниться.

a) Изменение интерпретатора

Изначально which – это сценарий sh (роль которого на kodomo исполняет dash). Bash по большей части является sh-совместимым, но содержит дополнительный функционал. Вам нужно будет сделать так, чтобы при вызове which запускался bash. После этого нужно удалить или модифицировать все части оригинального сценария, написанные на случай запуска другим интерпретатором.

b) Опция -l (эл)

С этой опцией все выданные имена файлов, являющихся символическими ссылками, должны дополняться символами -> с последующим адресом ссылки в виде, в котором его выдает программа readlink.

$ which 'sh'
/bin/sh
$ readlink '/bin/sh'
dash
$ which -l 'sh'
/bin/sh -> dash

c) Опция -r

С этой опцией все выданные имена файлов, являющихся символическими ссылками, должны дополняться символами -> с последующим адресом реального исполняемого файла, на который указыет ссылка или цепочка ссылок, в виде, в котором его выдает программа realpath.

$ which 'which'
/usr/bin/which
$ which -l 'which'
/usr/bin/which -> /etc/alternatives/which
$ which -r 'which'
/usr/bin/which -> /usr/bin/which.debianutils

Опция -r должна иметь приоритет, если указана одновременно с опцией -l.

Main/AdmLin/task1 (последним исправлял пользователь is_rusinov 2025-10-23 14:29:53)