Perché succede?
MacOS e Ubuntu sono configurati in modo diverso per gestire i duplicati nella cronologia dei comandi di bash. Queste configurazioni sono memorizzate in un numero di cosiddetti " dot-files ". Questi assumono la forma di ~ / .bash * e anche di sistema / etc / profile. Tutti questi file possono essere personalizzati a tuo piacimento e differenziati tra shell interattive, shell di login, shell remote ecc. Questi file sono letti in un ordine specifico e serve funzioni specifiche .
Come ottenere lo stesso comportamento su macOS?
Se si desidera solo questa personalizzazione singola di "ignorare i duplicati esatti delle righe di comando" si può andare con qualcosa come la risposta di Allan, ad esempio aggiungere una singola riga per esempio il file bash_profile. Non esiste "il modo corretto" ma innumerevoli opzioni.
Se questa non è l'unica personalizzazione per la tua bash, allora potrebbe non essere l'opzione migliore:
~/.bash_profile
should be super-simple and just load .profile and .bashrc (in that order)
~/.profile has the stuff NOT specifically related to bash, such as environment variables (PATH and friends)
- ~/.bashrc has anything you'd want at an interactive command line. Command prompt, EDITOR variable, bash aliases for my use
A few other notes:
- Anything that should be available to graphical applications OR to sh (or bash invoked as sh) MUST be in ~/.profile
- ~/.bashrc must not output anything
- Anything that should be available only to login shells should go in ~/.profile
- Ensure that ~/.bash_login does not exist.
Ciò significa che quando le cose diventano più complesse è buona idea a distribuisci le personalizzazioni in più file, ciascuno specializzato e altamente ordinato nei loro contenuti:
Tutto exports
può 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 "estratto" in modo che il file venga letto da bash all'avvio interattivo:
Sourcing files
If you have a lot of shell configurations, you may want to split them out into several subfiles and use the source builtin to load them from your .bashrc:
with adding source ~/.exports
to it.
In alternativa, per garantire che i file esistano realmente prima di caricare
if [ -f ~/.exports ]; then
. ~/.exports
fi
Il comando . ~/.exports
genererà ~/.exports
nel contesto della shell attualmente in esecuzione.
This is particularly useful for adding aliases, the separate file makes it easier to re-load them when you make changes.