在我新的 mac os/Darwin 系统上,我的find
工具是 11 年前的 BSD 版本。我使用 MacPorts 安装了一个更新的版本:GNU's find
,MacPorts 将其命名为gfind
,并放置在/opt/local/bin/
. 老化的 Apple 供应的find
仍然存在/usr/bin/find
。
如果系统仍在使用旧版本,我需要保留旧版本find
,但我更喜欢find
在命令行输入而不是gfind
. 旧习惯和所有这些......
我知道我可以gfind
在进入时find
通过创建一个link
in /opt/local/bin/
(它/usr/bin
在我的 PATH 之前)或创建一个alias
in 来运行.zshrc
。这两个工作正常。man gfind
我的问题是当我输入时如何获取man find
- 我尝试了几个版本的alias
in .zshrc
,但没有一个有效。
我怎样才能让它工作?在命令行输入时如何man gfind
进入寻呼机显示?man find
如果您不需要原始查找页面 - 只需将链接从
find.1.gz
到gfind.1.gz
更好的是,编辑 MANPATH 环境变量并将您自己的树(man1、man2 等)放入其中并替换手册页。
有一种简单而通用的方法可以将 MacPorts 安装的所有 GNU('g-prefixed')工具及其相关手册放在
$PATH
本机工具的前面:➤ MacPorts 包管理器创建(和更新)一个目录,其中包含指向安装在 MacOS 上的所有GNU 工具和手册的符号链接;即“g前缀”工具:
有两个(或更多)子目录包含手册。这些目录中的所有文件都是GNU 工具和手册的符号链接。例如:
如果我们检查
manpath
:➤ 因此我们看到,如果我们添加
/opt/local/libexec/gnubin
到 $PATH,我们将gfind
在find
输入命令时运行,并man gfind
在输入时查看man find
。PATH 可以通过添加gnubin
到现有 PATH 来修改:如果您对此感到满意,可以将其添加
export
到您的~/.zprofile
. 你就完成了。不再需要重新训练您的手指来gfind
代替find
.➤ 您也可以轻松定制:
许多 GNU 工具被打包为一个“集合”,这意味着它与Findutils 包
gfind
中的其他几个工具一起打包- 其中包括. 我对此表示满意,直到我了解到有一个顽固的错误可以有效地禁用它(因此变得无用) - 由于达尔文和 Linux 之间的一些差异。glocate
gupdatedb
glocate
我
locate
偶尔使用本机,并希望避免在 GNU 版本上浪费更多时间。对此的“修复”是指向unlink
的符号链接glocate
,gupdate
以及来自 的相关手册/opt/local/libexec/gnubin
。➤ 但是,如果您“定制” gnubin ,还有一个问题需要排序:
我了解到 MacPorts 会定期更新
/opt/local/libexec/gnubin
,并且其中一位维护人员已告知这些更新将“修复”我的修改!这只给解决方案增加了一个步骤:将原始gnubin
文件夹复制到另一个位置;unlink
对该备用位置进行所有编辑( s)并在 PATH 中使用它。以下是如何做到这一点:请注意,这是本机的 BSD 版本
cp
➤ 最终解决方案 - 编辑/取消链接 gnubin-m 并添加到 PATH