Jusqu'à ce mois-ci, mes configurations de shell étaient assez simples (juste un .bashrcou .bash_profileavec quelques alias principalement), mais je l'ai refactorisé pour que je puisse obtenir un comportement différent selon que j'utilise zsh et bash. Ils source d'abord un fichier de configuration de shell générique qui devrait fonctionner pour n'importe quoi, puis se spécialisent pour le shell spécifique utilisé (je fais un lien symbolique vers cela).
J'ai été surpris aujourd'hui lorsque j'ai lscessé de travailler. Il s'est avéré que lors du refactoring .bashrc, il y avait un alias
alias ls='ls --color=always'
qui cassait les choses pour lsen bash sur Terminal dans OSX. Une fois que j'ai vu que BSD lsaime la -Gcouleur, mais que GNU (ou tout ce qui était sur Ubuntu) aime --color, il était clair que plusieurs options diffèrent.
Ma question est la suivante: quelle est la meilleure façon de tenir compte des différences d'options et de telles différences entre BSD et GNU coreutils? Dois-je tester une variable env dans les ifblocs pour voir quel système d'exploitation est utilisé et appliquer le comportement correct? Ou est-il plus logique de créer des fichiers de configuration distincts pour chaque système d'exploitation?
Bien que les réponses à ces questions puissent être subjectives, il semble qu'un aperçu de la portée des différences entre les coreutils BSD et GNU et les stratégies pour les contourner afin de rendre une configuration générique utilisable sur la plupart des * nix serait assez objectif.
ls -cest différent dels --color. Modification de votre question à corriger.