Empecé a usar Mac recientemente y antes solía trabajar en Ubuntu.
Supongamos que ejecuto estos comandos uno por uno en mi terminal:
python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
Ahora suponga que quiero volver a ejecutar python main.py
, así que haré clic en la tecla arriba. Necesitaré hacer clic en la tecla hacia arriba solo dos veces en Ubuntu, pero 7 veces en Mac.
Si dos comandos consecutivos son iguales, entonces el terminal debe recordar solo un comando en lugar de recordar dos comandos diferentes.
¿Cómo puedo hacer que esto suceda en macOS?
zsh
y personalizar aún más zsh con varios scripts.Respuestas:
Debe agregar la variable de entorno HISTCONTROL a su
.bash_profile
. En su.bash_profile
agregar la siguiente línea:Cierre y reinicie su sesión de bash y los engaños deberían desaparecer. Alternativamente, podría ejecutar esa misma línea y surtirá efecto para esa sesión (úsela para probarla).
Desde la página
bash
del manual para (en la Terminal):fuente
¿Por qué pasó esto?
MacOS y Ubuntu están configurados de manera diferente para manejar duplicados en el historial de comandos de bash. Estas configuraciones se almacenan en una serie de los llamados " archivos de puntos ". Estos toman la forma de ~ / .bash * así como también el sistema / etc / profile. Todos estos archivos pueden personalizarse 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 cumplen funciones específicas.
¿Cómo obtener el mismo comportamiento en macOS?
Si solo desea esta única personalización 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 simple, por ejemplo, a su archivo bash_profile. No existe "la forma correcta", sino innumerables opciones.
En caso de que esta no sea la única personalización para su bash, esta podría no ser la mejor opción:
Eso significa que, cuando las cosas se vuelven más complejos, es buena idea para extender las personalizaciones en varios archivos, cada uno de ellos especializado y altamente ordenada en sus contenidos:
Todos
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 usuario, por ejemplo, llamado
.exports
que contiene:Esto debe "originarse" para que bash lea el archivo en el inicio interactivo:
Alternativamente, para garantizar que los archivos realmente existan antes de cargar
El comando
. ~/.exports
se originará~/.exports
en el contexto del shell actualmente en ejecución.fuente
.exports
se lee (fuente)?HISTCONTROL
se establece.bashrc
y~/.bashrc
se obtiene,~/.bash_profile
entonces no hay necesidad deexport
laHISTCONTROL
variable. Tanto un shell de inicio de sesión interactivo como un shell interactivo tendrán la variable establecida.Grabar unívocamente cada nuevo comando es complicado. Primero necesita agregar
~/.profile
o similar:Entonces necesitas agregar a
~/.bash_logout
:fuente