Tengo varias sesiones de PuTTy abiertas en mi servidor SunOS 5.10 y estoy usando ksh, y A VECES el historial de comandos se comparte entre las diferentes sesiones y A VECES no. No puedo entender qué determina si se comparte o no. Por compartido lo que quiero decir es que un comando ejecutado en una sesión se considerará como un comando anterior ejecutado en otra sesión.
Prefiero que no se comparta, ¿existe alguna configuración para eso?
Respuesta1
La mayoría de los shells de Unix leen el historial antiguo de un archivo, una vez (cuando se inicia el shell) y cuando se cierra ese shell, el historial se escribe nuevamente en el archivo.
Normalmente los contenidos antiguos simplemente se sobrescriben, así que si haces algo como...
- iniciar sesión en las sesiones A y B
- A y B leen el mismo contenido de
~/.history
- A y B leen el mismo contenido de
- ejecutar comando
test
en A- A se suma
test
a su historial en memoria - B no sabe sobre el comando
- A se suma
- cerrar sesión en A
- A sobrescribe
~/.history
con su historia, que tienetest
- A sobrescribe
- iniciar sesión en la sesión C
- C lee el contenido de
~/.history
, contest
- C lee el contenido de
- cerrar sesión en B
- B sobrescribe
~/.history
con su historial, que no tienetest
- B sobrescribe
- cerrar sesión en C
- C sobrescribe
~/.history
con su historia, que tienetest
- C sobrescribe
luego test
se guardará en el archivo de historial después del paso 3, pero el paso 5 lo descartará y el paso 6 lo agregará nuevamente...
Algunos shells tienen una opción de "añadir historial" que evita esto (por ejemplo, shopt -s histappend
en Bash).
Si desea tener historiales completamente separados, una manera sencilla es simplemente vincular simbólicamente su archivo de historial a /dev/null
.