До цього місяця мої конфігурації оболонок були досить простими (просто .bashrcабо .bash_profileв основному з деякими псевдонімами), але я переробляю його, щоб я міг отримати різну поведінку залежно від того, використовую ли я zsh та bash. Вони спочатку подають загальний файл конфігурації оболонки, який повинен працювати ні за що, а потім спеціалізуються на конкретній оболонці, яка використовується (я посилаюся на це).
Я сьогодні був здивований, коли lsперестав працювати. Виявилося, що під час рефакторингу .bashrcбув псевдонім
alias ls='ls --color=always'
це зламало речі lsв баші на Терміналі в OSX. Як тільки я побачив, що BSD lsподобається -Gза кольором, але GNU (або все, що було на Ubuntu) подобається --color, було зрозуміло, що досить багато варіантів відрізняються.
Моє запитання полягає в тому, що найкращий спосіб обліку різниць у варіантах і таких варіантах між BSD та GNU coreutils? Чи слід перевірити змінну env в ifблоках, щоб побачити, яка ОС використовується та застосувати правильну поведінку? Або має сенс робити окремі конфігураційні файли для кожної ОС?
Хоча відповіді на ці запитання можуть бути суб’єктивними, здається, що усунення сфери відмінностей між BSD та GNU coreutils та стратегіями їх вирішення, щоб зробити загальну конфігурацію, придатну для використання на більшості * nix, було б досить об'єктивно.
ls -cвідрізняється відls --color. Відредагував своє запитання, щоб виправити.