Fino a questo mese, le mie configurazioni di shell sono state piuttosto semplici (solo con .bashrc
o .bash_profile
con alcuni alias principalmente), ma l'ho riformattato in modo da poter ottenere un comportamento diverso a seconda che sto usando zsh e bash. Prima generano un file di configurazione della shell generico che dovrebbe funzionare per qualsiasi cosa, quindi si specializzano per la shell specifica in uso (ho un link simbolico a questo).
Sono stato sorpreso oggi quando ha ls
smesso di funzionare. Si è scoperto che durante il refactoring .bashrc
, c'era un alias
alias ls='ls --color=always'
quello stava rompendo le cose per ls
in bash sul terminale in OSX. Una volta ho visto che a BSD ls
piace il -G
colore, ma a GNU (o qualunque cosa fosse su Ubuntu) --color
, è stato chiaro che alcune opzioni differiscono.
La mia domanda è: qual è il modo migliore per spiegare le differenze nelle opzioni e simili tra coreutils BSD e GNU? Devo testare una variabile env in if
blocchi per vedere quale sistema operativo viene utilizzato e applicare il comportamento corretto? Oppure ha più senso creare file di configurazione separati per ciascun sistema operativo?
Sebbene le risposte a queste domande possano essere soggettive, sembra che una riduzione del campo di applicazione delle differenze tra coreutils di BSD e GNU e le strategie per aggirarle per rendere una configurazione generica utilizzabile sulla maggior parte dei * nix sarebbe abbastanza oggettiva.
ls -c
è diverso dals --color
. Modificata la tua domanda da correggere.