.png)
He leído que ksh, a diferencia de bash, vacía su historial después de cada comando. Esto puede ser bueno para muchos, pero a mí me vuelve loco.
Tengo varias ventanas abiertas que se abren para sus propias tareas, y este historial compartido confunde el historial de comandos de sesiones específicas.
¿Hay alguna manera de desactivar este vaciado, de modo que el historial pueda agregarse al historial de comandos solo en el momento de cerrar sesión?
¿O tal vez hay una manera de solicitar que el historial no actualice el historial de la línea de comandos cada vez?
Respuesta1
Solía tener varios shells ejecutándose en screen
. En mi .khsrc personalizaría varias configuraciones, incluidas $PS1 y $HISTFILE (e incluiría el nombre base del dispositivo tty).
Esto fue relativamente fácil de reconstruir:
tty=$(basename $(tty))
histdir=~/.hist
mkdir -p $histdir
export HISTFILE=$histdir/history.$tty
export PS1=$USER@'$PWD ['$tty'] ${?#0}$ '
exec /usr/bin/ksh
Guarde esto como ~/bin/screenshell
y ejecútelo chmod +x ~/bin/screenshell
. Ahora puede ejecutar screen
y tener archivos de historial separados para cada ventana.
SHELL=~/bin/screenshell screen
Ejemplos:
ventana 3
vagrant@/home/vagrant [3] 127$ history
1 history
2 error
3 history
ventana 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
Una alternativa sería ejecutar exec ksh
desde .kshrc
, pero necesitará algún tipo de prueba para evitar un bucle ejecutivo.