Большинство оболочек Unix читают старую историю из файла, один раз - когда запускается оболочка - и когда вы закрываете эту оболочку, история снова записывается в файл.
Обычно старое содержимое просто перезаписывается, так что если вы делаете что-то вроде ...
- войти в сеансы A и B
- A и B читают одно и то же содержимое
~/.history
- запустить
test
команды в A
- А добавляет
test
в свою историю в памяти
- Б не знает о команде
- выход из A
~/.history
своей историей, в которой есть test
- войти в сеанс C
- C читает содержимое
~/.history
, с test
- Выйти из B
- B переписывает
~/.history
своей историей, которая не имеет test
- выход из C
- C перезаписывает
~/.history
своей историей, в которой есть test
тогда test
будет сохранен в файл истории после шага № 3, но шаг № 5 отменит его, а шаг № 6 добавит его снова ...
В некоторых оболочках есть опция "история добавления", которая избегает этого (например, shopt -s histappend
в Bash).
Если вы хотите иметь полностью разделенные истории, проще всего просто вставить символическую ссылку в файл истории в /dev/null
.