Khi bạn đang cố gắng làm một cái gì đó có thể di chuyển, hãy kiểm tra các tính năng, không phải nền tảng:
if ls --help 2>&1 | grep -q -- --color
then
alias ls='ls --color=auto -F'
else
alias ls='ls -FG'
fi
Kiểm tra nền tảng bị phá vỡ khi nền tảng thay đổi. macOS cung cấp một hỗn hợp các công cụ người dùng BSD và GNU ngày nay, nhưng sự pha trộn này đang thay đổi theo thời gian theo hướng ưu tiên lớn hơn các công cụ BSD. Vì vậy, một thử nghiệm cho "macOS" ngày hôm nay có thể thất bại vào ngày mai khi Apple thay thế một công cụ GNU mà bạn phụ thuộc vào tương đương BSD gần nhất của nó nếu bạn đang dựa vào một tính năng mà cả hai thực hiện khác nhau. Kiểm tra tính năng thường xuyên hơn làm việc khi đối mặt với sự thay đổi.
Như một phần thưởng, đôi khi bạn cuối cùng tạo ra sự hỗ trợ cho các nền tảng mà ban đầu bạn không thử nghiệm. Đoạn mã trên cũng sẽ làm điều đúng đắn trên Solaris và FreeBSD, ví dụ.
(Đây là triết lý đằng sau GNU Autoconf, nhân tiện, đó là lý do tại sao một configure
tập lệnh được viết cách đây 10 năm có lẽ vẫn hoạt động trên một hệ thống hoàn toàn mới ngày nay.)
Sửa đổi các bí danh cho phù hợp. Tôi chỉ hiển thị các giá trị tôi sử dụng trên các hệ thống macOS và Linux gần nhất khi tôi viết nó.
brew install coreutils
... và sau đó chuẩn bị/usr/local/Cellar/coreutils/*/libexec/gnubin
cho ĐƯỜNG của bạn.