J'ai commencé à utiliser Mac récemment et avant de travailler sur Ubuntu.
Supposons que j'exécute ces commandes une par une sur mon terminal:
python3 main.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
python3 main2.py
Supposons maintenant que je veux python main.py
recommencer, donc je clique sur la touche haut. Je n'aurai besoin de cliquer sur la touche que deux fois sur Ubuntu mais 7 fois sur Mac.
Si deux commandes consécutives sont identiques, le terminal ne doit mémoriser qu'une seule commande au lieu de mémoriser deux commandes différentes.
Comment puis-je y arriver sur macOS?
zsh
et encore plus de personnaliser zsh avec divers scripts.Réponses:
Vous devez ajouter la variable d'environnement HISTCONTROL à votre
.bash_profile
. Dans votre,.bash_profile
ajoutez la ligne suivante:Fermez et redémarrez votre session bash et les dupes devraient avoir disparu. Alternativement, vous pouvez simplement exécuter cette même ligne et elle prendra effet pour cette session (utilisez-la pour la tester).
Depuis la page de manuel de
bash
(dans le terminal):la source
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:
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:Cela doit être "sourced" pour que le fichier soit lu par bash au démarrage interactif:
Alternativement, pour vous assurer que les fichiers existent réellement avant le chargement
La commande
. ~/.exports
sera source~/.exports
dans le contexte du shell en cours d'exécution.la source
.exports
il lu (sourcé)?HISTCONTROL
est définie dans.bashrc
et~/.bashrc
provient~/.bash_profile
de,export
laHISTCONTROL
variable n'est pas nécessaire . Un shell de connexion interactif et un shell interactif auront tous deux la variable définie.L'enregistrement unique de chaque nouvelle commande est délicat. Vous devez d'abord ajouter à
~/.profile
ou similaire:Ensuite, vous devez ajouter à
~/.bash_logout
:la source