需求

以 python 为例,OS X 自带的 python 在 /usr/bin/ 目录下;而有时候我们需要用 homebrew 安装我们需要的 python,并且调用 python 时,优先找到后者并执行。

方案 1

homebrew 安装的 python 会在 /usr/local/bin 目录下留一个软链接,编辑 profile 文件,使得 /usr/local/bin 优先于 /usr/bin/ 被搜索到。

1
export PATH="/usr/local/bin:$PATH"

方案 2

方案 1 简单,然而这里的环境变量一般是针对普通个人用户,对于 guest 用户,_www 用户,给予 /usr/local/bin 路径是不太合适的。

譬如在本地调试 php 调用 python 时,它只会在 /usr/bin/ 下找到 python 程序并执行,此为 OS X 的默认版本。

简单的思路就是删除它并且让 /usr/bin/python 链接到 /usr/local/bin/python

然而直接修改 /usr/bin/ 下的文件,即便使用 sudo,依然会出现Operation not permitted 的错误。

是 El Capitan 的 Rootless机制导致的。

Rootless机制将成为对抗恶意程序的最后防线,这句话挺有道理。

于是,在可以通过重启-恢复模式,执行 csrutil disable 暂时停用它,把想要的修改操作完之后,用同样的方式执行 csrutil enable 再启用它。

参考链接: http://www.jianshu.com/p/22b89f19afd6