Как я могу получить доступ к буферу истории в sh? (не в Баше)

Есть ли история команд в sh , например, как получить к ней доступ, а также, как обеспечить ее четкость?

Чтобы прояснить оболочку здесь: допустим, вы вошли в систему, отличную от Gui Linux, и $ SHELL не настроен на Bash, а скорее в Dash или в какой-либо такой Bourne-оболочке, которая может быть.

  • Как мне перерисовать OpenWRT?
  • Общие обозначения и стандарты флагов для сценариев и функций оболочки
  • Найдите наименьшие числа во втором столбце, соответствующие значениям индекса в первом столбце
  • В чем разница между командами Halt и Shutdown?
  • `test` и` [`- разные бинарные файлы, любая разница?
  • Разница между «команда не найдена» и «нет такого файла или каталога»?
  • Страницы с man ссылались на команду «history», которую я видел в некоторых BSD-системах, но на самом деле это не было в моей оболочке, и я не мог легко найти ответ на последующих страницах sh man и info.

    Комментарий decriptor в этом сообщении заставил меня подумать, может быть, это больше связано с необходимостью узнать о ключевых привязках в sh, а не о чем-то вроде различий между оболочками.

    Для будущих читателей, вот отличный пост по истории оболочки .

  • Сокращение малины Pi SD .img через сервер Ubuntu (cli)
  • как передать результат `find` как список файлов?
  • Получить весь список жестких дисков (/ dev / sd *) Использование командной строки
  • Можно ли перенаправить вывод команды на несколько команд?
  • IF для возврата true, если слово содержит конкретное письмо
  • Что означает ] В регулярном выражении?
  • 2 Solutions collect form web for “Как я могу получить доступ к буферу истории в sh? (не в Баше)”

    если он явно не задан, нет истории оболочки оболочки по умолчанию. чтобы проверить, есть ли у вас это или нет, команда env|grep -i hist может быть выполнена, и если вы видите переменные, такие как histfile и т. д. (может быть заглавными), это означает, что ваша история оболочки включена, и вы должны увидеть, где история файл находится. Чтобы очистить, вы можете сделать любой достойный метод, кроме удаления файла

    Не все оболочки поддерживают историю. dash имеет ограниченную поддержку истории через команду fc если она скомпилирована с поддержкой libedit, но не поддерживает ее в противном случае. dash не удается сохранить файл истории.

    Часто, если оболочка не поддерживает стрелку вверх, вы можете предположить, что она также не сохранит файл истории. Это не жесткое правило, но это верно в каждом случае, с которым я столкнулся.

    Некоторые другие оболочки (в частности, но и другие) используют readline, что обычно сохраняет историю в вашем домашнем каталоге как ~/.*_history , причем * заменяется именем программы. Например, Python 3 использует readline и сохраняет свою историю в ~/.python_history .

    В зависимости от оболочки местоположение сохранения может быть или не быть настраиваемым. bash и zsh используют HISTFILE (все кепки). Если ваша оболочка настроена правильно, это не должно быть переменной окружения, поэтому, если вы видите ее в env вы сделали ошибку (но она все равно должна отображаться на выходе set или printf %s\\n "$HISTFILE" ).

    Если программа не поддерживает историю (например, ed , shell-скрипты с использованием read или более старых версий mysql ), существует кросс-платформенное приложение, называемое rlwrap которое будет использовать readline, чтобы дать ему rlwrap вкладку, стрелку обработки и истории.

    Linux и Unix - лучшая ОС в мире.