¿Por qué sucede esto?
MacOS y Ubuntu se configuran de manera diferente para manejar duplicados en el historial de comandos de bash. Estas configuraciones se almacenan en una serie de llamados " archivos de puntos ". Estos toman la forma de ~ / .bash * así como el sistema / etc / profile. Todos estos archivos se pueden personalizar a su gusto y diferenciar entre shells interactivos, shells de inicio de sesión, shells remotos etc. Estos archivos se leen en un orden específico y sirven funciones específicas .
¿Cómo obtener el mismo comportamiento en macOS?
Si solo desea esto, la personalización individual de "ignorar los duplicados exactos de las líneas de comando" puede ir con algo como la respuesta de Allan, es decir, agregar una sola línea a, por ejemplo, su archivo bash_profile. No hay "la forma correcta" sino innumerables opciones.
En caso de que esta no sea la única personalización para tu bash, entonces podría no ser la mejor opción:
-
~/.bash_profile
debe ser super simple y simplemente cargar .profile y .bashrc (en ese orden)
-
~ / .profile tiene cosas que NO están específicamente relacionadas con bash, como las variables de entorno (PATH y amigos)
- ~ / .bashrc tiene todo lo que deseas en una línea de comandos interactiva. Símbolo del sistema, variable EDITOR, bash alias para mi uso
Algunas otras notas:
- Todo lo que debería estar disponible para aplicaciones gráficas O para sh (o bash invocado como sh) DEBE estar en ~ / .profile
- ~ / .bashrc no debe generar nada
- Todo lo que debería estar disponible solo para iniciar sesión en shells debe ir en ~ / .profile
- Asegúrese de que ~ / .bash_login no exista.
Eso significa que, cuando las cosas se vuelven más complejas, es buena idea para distribuye las personalizaciones en varios archivos, cada uno de ellos especializado y altamente ordenado en sus contenidos:
Todos los exports
pueden residir en su propio archivo para una supervisión simplificada.
Cree un archivo que bash lea en la raíz de su directorio de usuarios, por ejemplo, llamado .exports
que contiene:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Esto debe ser "originado" para que el archivo sea leído por bash en el inicio interactivo:
Sourcing files
Si tiene muchas configuraciones de shell, puede dividirlas en varios subarchivos y usar el código fuente incorporado para cargarlos desde su .bashrc:
con la adición de source ~/.exports
a él.
Alternativamente, para asegurarse de que los archivos realmente existan antes de cargarlos
if [ -f ~/.exports ]; then
. ~/.exports
fi
El comando . ~/.exports
generará ~/.exports
en el contexto del shell actualmente en ejecución.
Esto es particularmente útil para agregar alias, el archivo separado hace que sea más fácil volver a cargarlos cuando haces cambios.