Вопрос или проблема
После обновления до Ubuntu 24.04 hstr (бокс предложений истории) не работает. Это справедливо как для Ubuntu 24.04, так и для Kubuntu 24.04. Программное обеспечение установлено из репозиториев Ubuntu. Историю можно искать, но нажатие Enter не выбирает запись, оно только выводит её на экран.
Существует относящийся к этому, хотя и решенный баг в основном трекере ошибок.
Я добавил вывод hstr --show-configuration
в мой файл .~/bashrc
, как предложено в связанном баге.
Это связано с новым ядром в Ubuntu 20.04.
sysctl используется для изменения параметров ядра во время выполнения. Доступные параметры — это те, что перечислены в /proc/sys/. Procfs необходим для поддержки sysctl в Linux. Вы можете использовать sysctl как для чтения, так и для записи данных sysctl.
Запустите следующую команду, чтобы проверить, решает ли это проблему:
$ sudo sysctl -w dev.tty.legacy_tiocsti=1
Если это сработает, вам нужно сделать так, чтобы это сохранялось после перезагрузки, чтобы вам не пришлось вводить это снова:
Чтобы убедиться, что это сохраняется между перезагрузками системы на дистрибутивах с новыми версиями systemd, создайте новый конфигурационный файл:
$ sudo sh -c "echo 'dev.tty.legacy_tiocsti=1' > /etc/sysctl.d/9999-legacy-tiocsti.conf"
Осторожно, они отключили это из-за вредоносных скриптов: https://cateee.net/lkddb/web-lkddb/LEGACY_TIOCSTI.html
Я лично рекомендую вам не использовать эту устаревшую опцию и переключиться на другие менеджеры истории команд.
Ответ или решение
Вопрос, которым вы интересуетесь, касается проблемы с работой hstr (история поиска) после обновления до Ubuntu 24.04. В данной ситуации, пользователи сообщают о том, что после обновления программное обеспечение hstr не функционирует должным образом: хотя поиск истории работает, нажатие клавиши "Enter" не приводит к выбору записи, а просто выводит её в терминал.
Причина данной проблемы кроется в изменениях, связанных с новым ядром, которое было внедрено в Ubuntu 20.04 и выше. Изменения касаются параметров системы, доступных через интерфейс sysctl, используемого для модификации параметров ядра в реальном времени. Для работы hstr необходима поддержка Procfs, так как именно через этот интерфейс происходит взаимодействие с системными параметрами.
Для решения проблемы можно выполнить следующую команду в терминале:
sudo sysctl -w dev.tty.legacy_tiocsti=1
Эта команда активирует устаревшую функцию TIOCSTI, что в свою очередь позволяет hstr корректно работать с выбором записей. Если это решает вашу проблему, и hstr снова начинает функционировать нормально, вам необходимо обеспечить сохранение этого изменения после перезагрузки системы. Для этого создайте файл конфигурации:
sudo sh -c "echo 'dev.tty.legacy_tiocsti=1' > /etc/sysctl.d/9999-legacy-tiocsti.conf"
Важно учитывать, что использование данной устаревшей опции может быть небезопасным, так как она была отключена в новых версиях Linux из-за потенциальных рисков, связанных с малонадежными скриптами. Более подробную информацию вы можете найти по следующей ссылке: LEGACY_TIOCSTI.
В качестве альтернативного решения я бы рекомендовал рассмотреть возможность использования других менеджеров истории команд, которых много в этой нише и которые могут предложить вам более современные и безопасные функции, чем hstr.
В случае возникновения каких-либо дополнительных вопросов или необходимости в помощи, пожалуйста, не стесняйтесь обращаться за поддержкой.