1

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

Я предпочитаю, чтобы это не передавалось, есть ли настройки для этого?

1 ответ1

2

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

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

  1. войти в сеансы A и B
    • A и B читают одно и то же содержимое ~/.history
  2. запустить test команды в A
    • А добавляет test в свою историю в памяти
    • Б не знает о команде
  3. выход из 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .