Pourquoi cela se produit-il ?
MacOS et Ubuntu sont configurés différemment pour gérer les doublons dans l'historique des commandes de bash. Ces configurations sont stockées dans un certain nombre de " Dot-files ". Ceux-ci prennent la forme de ~/.bash* ainsi que du fichier système /etc/profile. Tous ces fichiers peuvent être personnalisés à votre convenance et font la différence entre 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 sous MacOS ?
Si vous ne voulez que cette seule et unique personnalisation de l'option "ignorer les doublons exacts des lignes de commande", vous pouvez opter pour quelque chose comme la réponse d'Allan, c'est-à-dire ajouter une seule et unique ligne à votre fichier bash_profile par exemple. Il n'y a pas de "bonne méthode" mais d'innombrables options.
Dans le cas où ce n'est pas la seule personnalisation pour votre bash alors ceci pourrait n'est pas la meilleure option :
Quelques autres notes :
- Tout ce qui doit être disponible pour les applications graphiques OU pour sh (ou bash invoqué comme sh) DOIT être dans ~/.profile.
- ~/.bashrc ne doit pas sortir quoi que ce soit
- Tout ce qui ne doit être disponible que pour les shells de connexion doit aller dans ~/.profile
- Assurez-vous que ~/.bash_login n'existe pas.
Cela signifie que lorsque les choses deviennent plus complexes, c'est bonne idée à étalé les personnalisations en plusieurs fichiers, chacun d'entre eux étant spécialisé et très ordonné dans son contenu :
Tous exports
peuvent résider dans leur propre dossier pour une surveillance simplifiée.
Créez un fichier qui sera 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';
Ceci doit être "sourcé" pour que le fichier soit lu par bash au démarrage interactif :
Fichiers d'approvisionnement
Si vous avez beaucoup de configurations de l'interpréteur de commandes, vous voudrez peut-être les répartir en plusieurs sous-fichiers et utiliser le buildin source pour les charger à partir de votre .bashrc : en ajoutant source ~/.exports
à elle.
Alternativement, pour s'assurer que les fichiers existent réellement avant de les charger
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é permet de les recharger plus facilement lorsque vous apportez des modifications.