Jusqu'à ce mois-ci, mes configurations de shell étaient assez simples (juste un .bashrc
ou .bash_profile
avec 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 ls
cessé 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 ls
en bash sur Terminal dans OSX. Une fois que j'ai vu que BSD ls
aime la -G
couleur, 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 if
blocs 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 -c
est différent dels --color
. Modification de votre question à corriger.