Ответы:
historyВстроенный bashпозволяет указать имена файлов при использовании -anrwфлагов и -aописание флага из help historyсостояний:
добавить строки истории из этого сеанса в файл истории
Поэтому мы можем сделать:
~$ history -a this_session.history
~$ cat ./this_session.history
history mysession.history
cat mysession.history
clear
history -a this_session.history
Для записи -w(история записи в файл opion) записывает всю историю в указанный файл, поэтому -a(добавление) здесь является предпочтительным выбором.
Есть и другие ручные способы. В частности ksh, не имеет -aфлаг, как это bashделает, но то, что ksh и mkshесть, является HISTFILEпеременной среды (и bashимеет это тоже, потому что bashвключает в себя множество kshфункций); кстати, эта переменная по умолчанию не установлена (по крайней мере, mkshв Ubuntu ее не устанавливали). Итак, для вывода текущего сеанса в другой файл мы вызываем HISTFILEprepended to command, что в синтаксисе оболочки означает запуск команды с указанной вами дополнительной переменной среды. Вот так:
bash-4.4$ HISTFILE='mykshfile.hist' ksh
$ echo 'Hello'
Hello
$ echo 'World'
World
$
bash-4.4$ cat ./mykshfile.hist
�echo 'Hello'
echo 'World'
Из этого также видно, что kshи связанные с ним оболочки выводят историю со специальными символами, а не простым текстом, как это bashделает. Итак, вы можете открыть этот файл с ksh.
Что касается оболочки POSIX /bin/shв Ubuntu , то есть Debian Almquist Shell или Dash, то здесь есть fcвстроенная оболочка . Однако в Ubuntu dash компилируется без lib-edit , что является сознательным выбором разработчиков Ubuntu по соображениям производительности, поэтому fcи другие режимы, требующие редактирования строк , не работают «из коробки» (если не перекомпилировать dashи не установить самостоятельно lib-edit).
Оболочка нейтральными способами будет записывать ваш сеанс с помощью существующих инструментов или написать свою собственную функцию для записи на основе каждой команды.