До цього місяця мої конфігурації оболонок були досить простими (просто .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
. Відредагував своє запитання, щоб виправити.