如何为特定操作系统配置 .zshrc

iro*_*and 18 zsh

我想在使用 Mac 时使用emacsfromApplications文件夹,但我.zshrc在 Ubuntu 中使用相同的文件夹。

alias emacs='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'
Run Code Online (Sandbox Code Playgroud)

所以我只想在我使用OS X. 如何获得操作系统名称.zshrc

wjv*_*wjv 25

我还在多个操作系统之间共享我的 Zsh 启动。您可以case对那些特定于系统的命令使用语句:

case `uname` in
  Darwin)
    # commands for OS X go here
  ;;
  Linux)
    # commands for Linux go here
  ;;
  FreeBSD)
    # commands for FreeBSD go here
  ;;
esac
Run Code Online (Sandbox Code Playgroud)

另外,您可以系统特定的启动分裂成所谓的(说)文件.zshrc-Darwin.zshrc-Linux等等,然后source将需要一个接近你的结束.zshrc

source "${ZDOTDIR:-${HOME}}/.zshrc-`uname`"
Run Code Online (Sandbox Code Playgroud)


Sim*_*mba 13

$OSTYPE首选检查环境变量,因为与运行外部命令相比,它更轻量级uname

OSTYPE 由 ZSH 设置 shell 本身。

操作系统类型

在编译时确定的操作系统。

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

例子

# for ZSH
case "$OSTYPE" in
  darwin*)
    # ...
  ;;
  linux*)
    # ...
  ;;
  dragonfly*|freebsd*|netbsd*|openbsd*)
    # ...
  ;;
esac
Run Code Online (Sandbox Code Playgroud)

参考

注意OSTYPEBash 中的可用值与 ZSH 中的值略有不同。


Kir*_*ira 3

只要检查一下你是否运行的不是linux。如果unameMac 中不存在,该if子句也会失败。

if [ "$(uname 2> /dev/null)" != "Linux" ]; then
    alias emacs='vim'
fi
Run Code Online (Sandbox Code Playgroud)