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

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

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

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

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

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

  • Что происходит, когда скрипт встречает ошибку в одной из команд?
  • выход из ловушки в тире против ksh и bash
  • Ошибка перенаправления Dash exec
  • Могу ли я отслеживать тире скрипта без изменения его исходного кода?
  • Когда sh является символической ссылкой на bash или тире, bash ограничивает себя соблюдением POSIX, поэтому он должен быть на 100% совместим с sh?
  • Вызов скрипта с sudo игнорирует shebang
  • Как запустить скрипт bash из сценария sh (dash)?
  • В сценарии проверьте, не поступает ли стандартный ввод из файла или канала
  • 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

    Mutt отправил файл в домашний каталог – как переместить

    Не удалось прочитать файл. У меня есть разрешения на чтение

    Какой аварийный диск (аварийный CD / DVD) для восстановления данных с отказавшего жесткого диска вы бы порекомендовали для первого пользователя?

    форвардные и обратные символические ссылки: административная практика?

    Почему gnutls не может связаться с этим сайтом?

    Изменение портов Ethernet в дереве устройств

    Хорошая или плохая практика? Перенаправление на stderr?

    Ключ, отличный от Control для отправки SIG *?

    Невозможно перечислить большие каталоги с помощью pureftpd

    traceroute и ping из школьной сети

    Как я могу найти и редактировать входные классы, о которых сообщает «xinput list –long»,

    Почему awk говорит «синтаксическая ошибка» для запятой, которую я установил между двумя шаблонами?

    Открытый ключ для git- … rpm не установлен

    Синхронизация с Onedrive

    Является непривилегированным LXC, где сам пользователь хоста отображается на 0 менее безопасным из того, где одна из его субад отображается на 0, и почему?

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