1

I have read that ksh, in contrary to bash, flushes its history after each command. This may be good for many, but for me, it drives me nuts!

I have several windows opened that are opened for their own tasks, and this history being shared messes up with specific session history of commands.

Is there a way I could disable this flushing, so the history could be appended to the command history at the logout time only?

Or, maybe there is a way to request history not to refresh command line history each time?

2
  • 1
    One solution is to set $HISTFILE to a different file in each window, so each has its own history. You need to set this before starting ksh, I believe. Commented May 30, 2018 at 19:23
  • @meuh - I had this idea for a moment but then it will be a mess with leftovers from shells being killed, and so on... Before I embark on this idea I am looking for a simpler one - like an option for history/ksh... At the end, I can give up on ksh and run bash. Commented May 30, 2018 at 19:43

1 Answer 1

0

I used to have multiple shells running in screen. In my .khsrc I would customize several settings, including $PS1 and $HISTFILE (and include the basename of the tty device).

This was relatively easey to reconstruct:

tty=$(basename $(tty)) histdir=~/.hist mkdir -p $histdir export HISTFILE=$histdir/history.$tty export PS1=$USER@'$PWD ['$tty'] ${?#0}$ ' exec /usr/bin/ksh 

Save this as ~/bin/screenshell, and run chmod +x ~/bin/screenshell. Now you can run screen and have separate history files for each window.

SHELL=~/bin/screenshell screen 

Examples:

Window 3

 vagrant@/home/vagrant [3] 127$ history 1 history 2 error 3 history 

Window 4

 vagrant@/home/vagrant [4] $ history 1 history vagrant@/home/vagrant [4] $ echo $HISTFILE /home/vagrant/.hist/history.4 vagrant@/home/vagrant [4] $ tty /dev/pts/4 

An alternative would be to run exec ksh from .kshrc, but you'll need some kind of test to prevent an exec-loop.

2
  • Thank you for your code. I suspect it does not share the history between windows after session is closed, right? Commented May 31, 2018 at 16:38
  • No, it doesn't. However, the number of history files is limited and it shouldn't be too much work to find and copy commands from other windows. Some answers to similar questions use $$ as selector, resulting in large numbers of files. Commented May 31, 2018 at 16:44

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.