On Mon, Jul 30, 2018 at 08:11:44PM -0400, Ken M wrote:
> OK, so confession 1, I am a long time bash user
> confession 2 all of my ksh experience is on solaris
>
> However in a when in Rome moment I am realizing how much I like ksh in openbsd,
> but one minor thing. I don't like how much clear ends up in my history file. So
> I am wondering what I can do to suppress a command going to history.
>
>
> Lets put my .profile here for reference
>
> # $OpenBSD: dot.profile,v 1.5 2018/02/02 02:29:54 yasuoka Exp $
> #
> # sh/ksh initialization
>
> . /etc/ksh.kshrc
>
> PATH=$HOME/bin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/X11R6/bin:/usr/local/bin:/usr/local/sbin:/usr/games:$HOME/.local/bin
> PS1="[\u@\h: \W]$ "
> HISTFILE=$HOME/.ksh_history
> HISTSIZE=1000
> export PATH HOME TERM PS1 HISTFILE HISTSIZE
>
> # For now clearing out clear from history when starting
> sed -i '/^clear$/d' $HISTFILE
>
> bind -m '^L'=clear'^J'
> # I wish this worked
> # bind -m '^L'=clear'^J';sed -i '$d' $HISTFILE
>
> alias ll='ls -l'
> alias la='ls -la'
> alias watch='gnuwatch'
>
>
> As you can see I tried adding the ; sed after my bind, I also tried it with &&
> sed and that did not work. Both of course remove the sed from history and not
> the clear. I guess I could remove the 2nd to last line. But before I go that sed
> route is there a cleaner way to prevent a command from going to the HISTFILE?
Check out HISTCONTROL[1] and ignorespace in particular. Adding something
along the lines to your ~/.kshrc should do the trick:
HISTCONTROL=ignorespace
bind -m '^L'='^U clear^J^Y' # note the intentional space before clear
[1] https://man.openbsd.org/ksh#HISTCONTROL
No comments:
Post a Comment