![如何更改 unix 可执行文件的默认版本?](https://linux22.com/image/1309161/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%20unix%20%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E7%9A%84%E9%BB%98%E8%AE%A4%E7%89%88%E6%9C%AC%EF%BC%9F.png)
我目前在 OSX 机器上安装了同一可执行文件的两个版本:一个位于 usr/bin,另一个是 Macports 安装。当我运行 时which
,终端将位置返回到 usr/bin 版本。是否有统一的方法来更改默认安装,还是每个应用程序都有自己的命令选项?
答案1
需要修改PATH
环境变量,这是Unix下搜索可执行文件的标准。
当 Unix 上的某些东西寻找使用相对路径(例如:clang
而不是/usr/bin/clang
)的应用程序时,PATH
会按:
字符进行拆分,然后按顺序搜索。
例如:如果您的PATH
是,/opt/local/bin:/bin:/usr/bin
那么clang
将寻找/opt/local/bin/clang
,如果缺少 ,/bin/clang
等等。
从技术上讲,每个过程都有自己的方式来执行此操作 - 没有什么强迫它们遵循使用惯例$PATH
,但是这种方式已经持续了很长时间,几乎所有事情都是这样做的。
另一个考虑因素是每个进程都有自己的环境 -PATH
其中包含的副本。其中包括 launchd,它负责 UI 和从中启动的任何应用程序。
因此,您可以在 shell 初始化脚本(、、等)中修改它.bash_profile
,但是如果您以 GUI 应用程序启动 vim 或 emacs .bashrc
,.profile
那么它将不起作用。
您还可以修改/etc/paths
或向 添加文件/etc/paths.d
,这将构成所有内容(包括在 Mac 上启动的每个应用程序)的标准环境的一部分。(不过,您需要注销并重新登录才能使其渗透到系统的每个部分。)
答案2
如果$PATH
出于某种原因无法进行修改,您可以创建别名调用相应目录中的可执行文件。
答案3
该PATH
变量定义您的命令的位置。
您可以在自己的文件中修改此变量/etc/paths
。您应该/usr/bin
在其他人之前验证这一点。