
Я сталкиваюсь с этой проблемой на некоторых серверах 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 и давала каждому сеансу отдельный файл истории, только те способы, которые я могу придумать.