Hasta este mes, mis configuraciones de shell han sido bastante simples (solo un .bashrco .bash_profilecon algunos alias principalmente), pero lo he refactorizado para que pueda obtener un comportamiento diferente dependiendo de si estoy usando zsh y bash. Primero obtienen un archivo de configuración de shell genérico que debería funcionar para lo que sea, luego se especializan para el shell específico que se está utilizando (enlace simbólico a esto).
Hoy me sorprendió cuando lsdejé de trabajar. Resultó que durante la refactorización .bashrc, había un alias
alias ls='ls --color=always'
eso fue romper cosas para lsbash en Terminal en OSX. Una vez que vi que a BSD lsle gusta el -Gcolor, pero a GNU (o lo que sea que estaba en Ubuntu) le gusta --color, quedó claro que algunas opciones difieren.
Mi pregunta es, ¿cuál es la mejor manera de explicar las diferencias en las opciones y tales entre los coreutils de BSD y GNU? ¿Debo probar una variable env en ifbloques para ver qué sistema operativo se está utilizando y aplicar el comportamiento correcto? ¿O tiene más sentido crear archivos de configuración separados para cada sistema operativo?
Si bien las respuestas a estas preguntas pueden ser subjetivas, parece que un resumen del alcance de las diferencias entre los coreutils de BSD y GNU y las estrategias para solucionarlos para hacer que una configuración genérica sea utilizable en la mayoría de * nix sería bastante objetivo.
ls -ces diferente dels --color. Editó su pregunta para arreglarla.