Não, isso não é verdade.
Se $HISTFILE for um nome de arquivo, o histórico da sessão será armazenado nesse arquivo. Isso é explicado no manual. O número de comandos lembrados no histórico do shell é limitado pelo valor de $HISTSIZE .
Eu acredito que o histórico é liberado para o arquivo após a execução de cada comando, em oposição a bash que libera o histórico para o arquivo quando a sessão do shell termina. Isso pode depender de qual implementação de ksh você está usando.
Defina HISTFILE como um nome de arquivo no seu arquivo ~/.profile (que é lido por shells de login) ou no arquivo apontado por $ENV (que é lido por shells interativos e tem o valor padrão de $HOME/.kshrc em código%). ksh93 é por padrão 500 ou 512 ou algo parecido, dependendo da implementação de $HISTSIZE que você está usando. Nenhuma dessas variáveis precisa ser exportada. O arquivo de histórico não precisa existir antes de fazer isso.
Nos comentários, você menciona que algumas teclas de edição de movimento e linha de comando do Emacs não funcionam. Isso ocorre porque o shell não está no modo de edição do Emacs. Defina a variável ksh (ou EDITOR ) como VISUAL ou use emacs para ativar o modo de edição de linha de comando do Emacs. Isso também é explicado no manual. Essas variáveis também não precisam ser exportadas, a menos que você deseje que outros programas sejam usados pelo shell.
Resumo:
No seu arquivo set -o emacs :
export ENV="$HOME/.kshrc"
No seu arquivo $HOME/.profile :
HISTFILE="$HOME/.ksh_history"
HISTSIZE=5000
export VISUAL="emacs"
export EDITOR="$VISUAL"
set -o emacs
Isso foi testado no OpenBSD com $HOME/.kshrc e ksh93 (que é pdksh no OpenBSD). Eu não uso ksh , mas como é um derivado de mksh , acredito que isso funcionaria com essa shell também.
Observação de que pdksh e pdksh (e ksh93 ) não podem compartilhar o arquivo de histórico porque têm formatos de histórico diferentes.
Normalmente, isso não é um problema se você separou arquivos de inicialização para bash e bash , por exemplo, ksh e .bash_profile para .bashrc e bash e .profile para .kshrc (com ksh in export ENV="$HOME/.kshrc" ). Você pode ainda distinguir várias implementações de .profile observando ksh (normalmente).