Как создать отдельную историю команд для разных сеансов для одного и того же пользователя?

Как создать отдельную историю команд для разных сеансов для одного и того же пользователя?

Я сталкиваюсь с этой проблемой на некоторых серверах Unix. Когда я открываю разные сеансы для одного и того же пользователя, история команд становится общей для всех сеансов. Это создает проблемы, если я по ошибке нажимаю Ctrl-Pили up arrowи просто нажимаю Enter. Однажды я в конечном итоге запустил, rm -rf *к счастью, я был в каталоге, где у меня не было прав на удаление файлов.

Как иметь отдельную историю команд для разных сеансов для одного и того же пользователя? Большую часть времени я использую оболочки ksh и tcsh.

решение1

Вы можете добавить HISTFILE=~/.hist$$в свой .profile. Это должно сгенерировать уникальный файл для каждого сеанса.

В конечном итоге у вас их будет много, .hist*поэтому я советую вам время от времени их удалять.

решение2

Изкш faq:

В1. Как получить отдельные файлы истории для оболочки?

A1. ksh использует общий файл истории для всех оболочек, которые используют одно и то же имя файла истории. Это означает, что команды, введенные в одном окне, будут видны оболочкам в других окнах. Чтобы получить отдельные окна, переменную HISTFILE необходимо установить на другое имя до создания первой команды истории.

решение3

Я предполагаю, что вы говорите об одновременных сеансах; разделение сеансов, следующих друг за другом, не очень полезно: вы больше никогда не сможете использовать его историю, потому что все сеансы будут уникальными. Если бы это было так, вам, вероятно, было бы лучше просто отключить историю команд.

Если мы говорим о разделении одновременных сеансов, я бы рекомендовал вам использовать Bash. Я почти уверен, что не смешаю с ним историю команд из двух одновременных сеансов. Bash записывает историю только при выходе .bash_historyиз системы, поэтому история команд не будет смешиваться до выхода из системы. При условии, что использование Bash приемлемо, решит ли это вашу проблему?

решение4

Вы могли бы использоватьэкран. Я также сделалпеременная, которая была определена моим профилем konsole и давала каждому сеансу отдельный файл истории, только те способы, которые я могу придумать.

Связанный контент