Perché succede?
MacOS e Ubuntu sono configurati in modo diverso e pronto all'uso per gestire i duplicati nella cronologia dei comandi di bash. Queste configurazioni sono memorizzate in un numero di cosiddetti " file dot ". Questi assumono la forma di ~ / .bash * e anche il profilo di sistema / etc /. Tutti questi file possono essere personalizzati a proprio piacimento e differenziati tra shell interattive, shell di login, shell remote ecc. Questi file vengono letti in un ordine specifico e servono funzioni specifiche.
Come ottenere lo stesso comportamento su macOS?
Se vuoi solo questo, una singola personalizzazione di "ignorare i duplicati esatti delle righe di comando" puoi andare con qualcosa come la risposta di Allan, cioè aggiungere una singola riga singola per esempio al tuo file bash_profile. Non esiste "il modo corretto" ma innumerevoli opzioni.
Nel caso in cui questa non sia l'unica personalizzazione per il tuo bash, questa potrebbe non essere l'opzione migliore:
Alcune altre note:
- Tutto ciò che dovrebbe essere disponibile per applicazioni grafiche O per sh (o bash invocato come sh) DEVE essere in ~ / .profile
- ~ / .bashrc non deve produrre nulla
- Tutto ciò che dovrebbe essere disponibile solo per accedere alle shell dovrebbe andare in ~ / .profile
- Assicurarsi che ~ / .bash_login non esista.
Ciò significa che, quando le cose si fanno più complesse, è buona idea per diffondere le personalizzazioni in più file, ognuno dei quali specializzato e altamente ordinato nei loro contenuti:
Tutti exports
possono risiedere nel proprio file per una supervisione semplificata.
Crea un file letto da bash nella directory principale della tua directory utente, ad esempio chiamato .exports
che contiene:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Questo deve essere "di provenienza" in modo che il file venga letto da bash all'avvio interattivo:
Sourcing dei file
Se si hanno molte configurazioni della shell, è possibile dividerle in più file secondari e utilizzare il sorgente incorporato per caricarli dal proprio .bashrc: con l'aggiunta source ~/.exports
ad esso.
In alternativa, per garantire che i file esistano effettivamente prima del caricamento
if [ -f ~/.exports ]; then
. ~/.exports
fi
Il comando . ~/.exports
verrà generato ~/.exports
nel contesto della shell attualmente in esecuzione.
Ciò è particolarmente utile per l'aggiunta di alias, il file separato semplifica il loro nuovo caricamento quando si apportano modifiche.
zsh
e persino personalizzare zsh con vari script.