У меня открыто несколько сеансов PuTTy на моем сервере SunOS 5.10, и я использую ksh, и ИНОГДА история команд является общей для разных сеансов, а ИНОГДА нет. Я не могу понять, что определяет, является ли она общей или нет. Под общей я подразумеваю, что команда, запущенная в одном сеансе, будет рассматриваться как предыдущая команда, запущенная в другом сеансе.
Я предпочитаю, чтобы этим не делились. Есть ли для этого настройка конфигурации?
решение1
Большинство оболочек Unix считывают старую историю из файла один раз — при запуске оболочки, а когда вы ее закрываете, история снова записывается в файл.
Обычно старое содержимое просто перезаписывается, поэтому если вы сделаете что-то вроде...
- войти в сеансы A и B
- А и Б читают одно и то же содержание
~/.history
- А и Б читают одно и то же содержание
- выполнить команду
test
в A- A добавляет
test
в свою историю в памяти - B не знает о команде
- A добавляет
- выйти из системы A
- A перезаписывает
~/.history
свою историю, которая имеетtest
- A перезаписывает
- войти в сеанс C
- C считывает содержимое
~/.history
, сtest
- C считывает содержимое
- выйти из B
- B перезаписывает
~/.history
свою историю, которая не имеетtest
- B перезаписывает
- выйти из C
- C перезаписывает
~/.history
свою историю, которая естьtest
- C перезаписывает
затем test
будет сохранен в файле истории после шага №3, но шаг №5 его отменит, а шаг №6 добавит его снова...
В некоторых оболочках есть опция «добавить историю», которая позволяет избежать этого (например, shopt -s histappend
в Bash).
Если вы хотите иметь полностью отдельные истории, самый простой способ — просто создать символическую ссылку на файл истории на /dev/null
.