Até este mês, minhas configurações de shell eram bastante simples ( principalmente com .bashrc
ou .bash_profile
com alguns aliases), mas eu a refatorava para que eu pudesse ter um comportamento diferente, dependendo de estar usando zsh e bash. Eles primeiro fornecem um arquivo de configuração de shell genérico que deve funcionar para qualquer coisa, depois se especializam para o shell específico que está sendo usado (eu ligo para isso).
Fiquei surpreso hoje quando ls
parei de trabalhar. Verificou-se que durante a refatoração .bashrc
havia um apelido
alias ls='ls --color=always'
que estava quebrando coisas ls
no bash no Terminal no OSX. Quando vi que o BSD ls
gosta -G
de cores, mas o GNU (ou o que quer que estivesse no Ubuntu) gosta --color
, ficou claro que muitas opções diferem.
Minha pergunta é: qual é a melhor maneira de explicar as diferenças de opções entre os coreutils do BSD e do GNU? Devo testar uma variável env em if
blocos para ver qual sistema operacional está sendo usado e aplicar o comportamento correto? Ou faz mais sentido criar arquivos de configuração separados para cada sistema operacional?
Embora as respostas a essas perguntas possam ser subjetivas, parece um resumo do escopo das diferenças entre os coreutils do BSD e do GNU e as estratégias para contorná-las para tornar uma configuração genérica utilizável na maioria dos * nix seriam bastante objetivas.
ls -c
é diferente dels --color
. Editou sua pergunta para corrigir.