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

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

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

Страницы с man ссылались на команду «history», которую я видел в некоторых BSD-системах, но на самом деле это не было в моей оболочке, и я не мог легко найти ответ на последующих страницах sh man и info.

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

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

  • Почему читать -r есть текст?
  • У меня есть многострочная строка, которую мне нужно перебрать, но я не использую bash. Совет?
  • swap windows с тире скриптом
  • тире: Труба STDIN к нескольким командам и их вывод в STDOUT в определенном порядке
  • Как перенаправление файлов bash на стандарт отличается от shell (`sh`) в Linux?
  • Сообщение об ошибке Shell script
  • Получить номер строки в сценарии оболочки Bourne
  • В сценарии проверьте, не поступает ли стандартный ввод из файла или канала
  • 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 вкладку, стрелку обработки и истории.

    Interesting Posts

    используя Set uid для запуска корневой команды от пользователя без полномочий root

    Кольца и уровни выполнения

    Как остановить работу в минуту cron?

    Попытка удалить эхо-код пароля в Redhat 5 при входе в систему

    Как Linux должен быть разработан, если по-другому?

    Изменить строку с помощью Sed

    lshw говорит, что я использую проприетарный драйвер, хотя я переустановил свою ОС, чтобы вернуться в нувориш

    Диапазон идентификаторов процессов

    Экспорт открытых ключей с использованием gpg

    X.org работает без сокета в chroot?

    Можем ли мы использовать символическую ссылку и жесткую ссылку для каталогов?

    Поиск в файле, но не в подкаталоги

    Как получить дополнительную информацию о загрузочном сообщении «Ожидание / dev для полного заполнения»

    tail -f не выводит результат в live CD на Ubuntu

    Каковы накладные расходы на использование нескольких более мелких устройств рейдов в сравнении с секционированными устройствами рейдов в виде физических томов?

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