Ich führe OS / X auf meinem PC und Linux auf meinen Remote-Servern aus. (Ich konnte mir noch nie einen Xserve leisten, als sie noch hergestellt wurden.) Ich würde gerne dieselbe .bashrc-Datei für beide verwenden, und ich möchte, dass ls mir Farben anzeigt, damit ich ausführbare Dateien, Verzeichnisse und die mögen.
Aber die GNU ls
unter Linux möchte den --colors
Befehlszeilenschalter sehen, oder sie weigert sich, Farben anzuzeigen. Apple (BSD?) ls
Liefert es, die export CLICOLORS=1
Shell-Variable zu sehen, damit sie Farben anzeigt.
Ich würde beides tun, aber die Apple- ls
Barfs, wenn sie einen unbekannten --colors
Schalter sehen.
Gibt es in .bashrc eine gute Möglichkeit, zu erkennen, ob ls
ein Switch akzeptiert wird, und dann zu entscheiden, ob ein Alias verwendet werden soll --colors
oder nicht?
brew install coreutils
... und dann/usr/local/Cellar/coreutils/*/libexec/gnubin
Ihrem PFAD voranstellen .Antworten:
Wenn Sie versuchen, etwas Portables zu tun, testen Sie auf Funktionen, nicht auf Plattformen:
Plattformtests werden unterbrochen, wenn sich die Plattform ändert. macOS liefert heute eine Mischung aus BSD- und GNU-Userland-Tools aus, aber diese Mischung verschiebt sich im Laufe der Zeit hin zu einem größeren Übergewicht an BSD-Tools. Ein Test für "macOS" von heute kann daher morgen fehlschlagen, wenn Apple ein GNU-Tool, von dem Sie abhängig waren, durch das nächstgelegene BSD-Äquivalent ersetzt, wenn Sie sich auf eine Funktion verlassen, die die beiden unterschiedlich implementieren. Funktionstests funktionieren angesichts von Änderungen häufiger.
Als Bonus erstellen Sie manchmal Unterstützung für Plattformen, gegen die Sie ursprünglich nicht getestet haben. Das obige Skriptfragment sollte beispielsweise auch unter Solaris und FreeBSD das Richtige tun.
(Dies ist übrigens die Philosophie hinter GNU Autoconf, weshalb ein
configure
vor 10 Jahren geschriebenes Skript wahrscheinlich noch heute auf einem brandneuen System funktioniert.)Ändern Sie die Aliase entsprechend. Ich zeige nur die Werte, die ich auf den MacOS- und Linux-Systemen verwende, die mir beim Schreiben am nächsten liegen.
quelle
Sie können überprüfen, ob es sich um Linux handelt, und es dann einstellen
ls
. dh:quelle