So konfigurieren Sie .zshrc für bestimmte Betriebssysteme

14

Ich möchte emacsaus dem ApplicationsOrdner verwenden, wenn ich einen Mac verwende, aber ich verwende dasselbe .zshrcin Ubuntu.

alias emacs='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'

Daher möchte ich diesen Alias ​​nur erstellen, wenn ich ihn verwende OS X. Wie kann ich einen Betriebssystemnamen erhalten .zshrc?

Eisensand
quelle

Antworten:

2

Überprüfen Sie einfach, ob Sie kein Linux ausführen. Wenn unamees in Mac nicht vorhanden ist, schlägt auch die ifKlausel fehl.

if [ "$(uname 2> /dev/null)" != "Linux" ]; then
    alias emacs='vim'
fi
Kira
quelle
14

Ich teile meinen Zsh-Start auch zwischen mehreren Betriebssystemen. Sie können eine caseAnweisung für die Befehle verwenden, die systemspezifisch sind:

case `uname` in
  Darwin)
    # commands for OS X go here
  ;;
  Linux)
    # commands for Linux go here
  ;;
  FreeBSD)
    # commands for FreeBSD go here
  ;;
esac

Alternativ können Sie auch systemspezifische Systemstart in Dateien mit dem Namen (sagen wir) abgespalten .zshrc-Darwin, .zshrc-Linuxusw. und dann sourcebenötigte man am Ende Ihres .zshrc:

source "${ZDOTDIR:-${HOME}}/.zshrc-`uname`"
wjv
quelle
10

Das Überprüfen der Umgebungsvariablen $OSTYPEwird bevorzugt, da sie im Vergleich zum Ausführen des externen Befehls leichter ist uname.

OSTYPE wird von ZSH die Shell selbst eingestellt.

OSTYPE

Das Betriebssystem, wie zur Kompilierungszeit festgelegt.

http://zsh.sourceforge.net/Doc/Release/Parameters.html#Parameters-Set-By-The-Shell

Beispiel

# for ZSH
case "$OSTYPE" in
  darwin*)
    # ...
  ;;
  linux*)
    # ...
  ;;
  dragonfly*|freebsd*|netbsd*|openbsd*)
    # ...
  ;;
esac

Referenz

Hinweis : Die verfügbaren OSTYPEWerte in Bash unterscheiden sich geringfügig von den Werten in ZSH.

Simba
quelle