Pourquoi cela arrive-t-il?
MacOS et Ubuntu sont configurés différemment prêts à l'emploi pour gérer les doublons dans l'historique des commandes de bash. Ces configurations sont stockées dans un certain nombre de fichiers dits . Ceux-ci prennent la forme de ~ / .bash * ainsi que le profil / etc / à l'échelle du système. Tous ces fichiers peuvent être personnalisés à votre convenance et différencier les shells interactifs, shells de connexion, shells distants, etc. Ces fichiers sont lus dans un ordre spécifique et remplissent des fonctions spécifiques.
Comment obtenir le même comportement sur macOS?
Si vous voulez juste celui-ci, une personnalisation unique de "ignorer les doublons exacts des lignes de commande", vous pouvez aller avec quelque chose comme la réponse d'Allan, c'est-à-dire ajouter une seule ligne unique par exemple à votre fichier bash_profile. Il n'y a pas "la bonne façon" mais d'innombrables options.
Dans le cas où ce n'est pas la seule personnalisation de votre bash, cela pourrait ne pas être la meilleure option:
Quelques autres notes:
- Tout ce qui devrait être disponible pour les applications graphiques OU pour sh (ou bash appelé comme sh) DOIT être dans ~ / .profile
- ~ / .bashrc ne doit rien produire
- Tout ce qui ne devrait être disponible que pour les shells de connexion devrait aller dans ~ / .profile
- Assurez-vous que ~ / .bash_login n'existe pas.
Cela signifie que lorsque les choses deviennent plus complexes, il est judicieux d' étaler les personnalisations dans plusieurs fichiers, chacun d'eux spécialisé et hautement ordonné dans son contenu:
Tous exports
peuvent résider dans leur propre dossier pour une surveillance simplifiée.
Créez un fichier lu par bash à la racine de votre répertoire utilisateur, par exemple appelé .exports
qui contient:
# Omit duplicates and commands that begin with a space from history.
export HISTCONTROL='ignoreboth';
Cela doit être "sourced" pour que le fichier soit lu par bash au démarrage interactif:
Sourcing de fichiers
Si vous avez beaucoup de configurations de shell, vous voudrez peut-être les diviser en plusieurs sous-fichiers et utiliser le code source pour les charger depuis votre .bashrc: en y ajoutant source ~/.exports
.
Alternativement, pour vous assurer que les fichiers existent réellement avant le chargement
if [ -f ~/.exports ]; then
. ~/.exports
fi
La commande . ~/.exports
sera source ~/.exports
dans le contexte du shell en cours d'exécution.
Ceci est particulièrement utile pour ajouter des alias, le fichier séparé facilite leur rechargement lorsque vous apportez des modifications.
zsh
et encore plus de personnaliser zsh avec divers scripts.