4

Наткнулся на странный случай в системе Ubuntu Lucid:

Командная строка bash в большинстве случаев работает нормально, но по какой-то причине иногда Up не работает для вызова предыдущей команды. Он помнит предыдущие, но, похоже, последний был забыт. Так что это должно быть напечатано или скопировано обратно, действительно раздражает ...

Есть идеи, что может быть причиной этого?

bash - это версия дистрибутива, 4.1.5(1)-релиз (пакет: 4.1-2ubuntu3)

1 ответ1

9

Команды, введенные с начальным пробелом, обычно не сохраняются в истории bash. Это особенность: если вы хотите, чтобы bash не помещал команду в историю, такую как опасная команда типа rm -rf ... , поставьте перед ней пробел. Кроме того, повторяющиеся команды могут быть проигнорированы.

Это поведение настраивается с помощью переменной HISTCONTROL . От man bash:

HISTCONTROL

Список значений, разделенных двоеточиями, управляющий тем, как команды сохраняются в списке истории. Если в списке значений есть пробел игнорирования, строки, начинающиеся с пробела, не сохраняются в списке истории. Значение ignoredups приводит к тому, что строки, соответствующие предыдущей записи истории, не сохраняются. Значение ignoreboth является сокращением для ignorespace и ignoredups. Значение erasedups приводит к тому, что все предыдущие строки, соответствующие текущей строке, удаляются из списка истории перед сохранением этой строки. Любое значение, отсутствующее в приведенном выше списке, игнорируется. Если HISTCONTROL не установлен или не содержит допустимого значения, все строки, прочитанные синтаксическим анализатором оболочки, сохраняются в списке истории, в зависимости от значения HISTIGNORE. Вторая и последующие строки многострочной составной команды не тестируются и добавляются в историю независимо от значения HISTCONTROL.

Чтобы увидеть, как настроена ваша оболочка, запустите:

echo $HISTCONTROL

Чтобы изменить новую настройку, отредактируйте файл ~/.bashrc .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .