История команд в нескольких сеансах PuTTy в SunOS 5.10

История команд в нескольких сеансах PuTTy в SunOS 5.10

У меня открыто несколько сеансов PuTTy на моем сервере SunOS 5.10, и я использую ksh, и ИНОГДА история команд является общей для разных сеансов, а ИНОГДА нет. Я не могу понять, что определяет, является ли она общей или нет. Под общей я подразумеваю, что команда, запущенная в одном сеансе, будет рассматриваться как предыдущая команда, запущенная в другом сеансе.

Я предпочитаю, чтобы этим не делились. Есть ли для этого настройка конфигурации?

решение1

Большинство оболочек Unix считывают старую историю из файла один раз — при запуске оболочки, а когда вы ее закрываете, история снова записывается в файл.

Обычно старое содержимое просто перезаписывается, поэтому если вы сделаете что-то вроде...

  1. войти в сеансы A и B
    • А и Б читают одно и то же содержание~/.history
  2. выполнить команду testв A
    • A добавляет testв свою историю в памяти
    • B не знает о команде
  3. выйти из системы A
    • A перезаписывает ~/.historyсвою историю, которая имеетtest
  4. войти в сеанс C
    • C считывает содержимое ~/.history, сtest
  5. выйти из B
    • B перезаписывает ~/.historyсвою историю, которая не имеетtest
  6. выйти из C
    • C перезаписывает ~/.historyсвою историю, которая естьtest

затем testбудет сохранен в файле истории после шага №3, но шаг №5 его отменит, а шаг №6 добавит его снова...

В некоторых оболочках есть опция «добавить историю», которая позволяет избежать этого (например, shopt -s histappendв Bash).

Если вы хотите иметь полностью отдельные истории, самый простой способ — просто создать символическую ссылку на файл истории на /dev/null.

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