如何使 GNU grep 成為 FreeBSD 中的預設值?
我正在執行 FreeBSD 9.1-RELEASE。我已經安裝了 GNU grep 和
portmaster textproc/gnugrep
.然而,使用者的“預設”grep 仍然是 FreeBSD grep。
# /usr/local/bin/grep -V /usr/local/bin/grep (GNU grep) 2.12 # grep -V grep (GNU grep) 2.5.1-FreeBSD
我想讓 GNU grep 成為預設值。我知道問題在於我的
PATH
環境變數中指定的目錄順序:# echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin
但是,我害怕將
/usr/local/bin
條目移到我的PATH
. 安全嗎?在像 Debian 這樣的 Linux 發行版中,此類任務通常通過
dpkg-divert
和/或update-alternatives
.在 FreeBSD 中做我想做的事情而不破壞系統升級等的最佳方法是什麼?
**更新:**請注意,此答案來自 2013 年,適用於 FreeBSD 8.x 及更早版本。在修訂版 222273中添加了一個BSD grep ,並出現在 FreeBSD-9.0 中(奇怪的是,通常全面的發行說明中缺少該更改:Google 搜尋)。功能齊全的 GNU grep 繼續在 ports 集合中可用。
FreeBSD
grep
是 GNU ,儘管它很grep
舊並且應用了一些更新檔:# which grep /usr/bin/grep # /usr/bin/grep -V grep (GNU grep) 2.5.1-FreeBSD Copyright 1988, 1992-1999, 2000, 2001 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
它有少量更新檔(大部分來自 Fedora Linux),如果您
/usr/src/
安裝了這些更新檔,請參閱/usr/src/gnu/usr.bin/grep/FREEBSD-upgrade
.如果您在埠版本(2.12 與 2.5.1)中有很多錯誤修復、速度改進和 PCRE 支持(在系統版本中未啟用),那麼將您的
-P
重新排序放在第一位應該是相當安全的,這是我通常做的事情。(這是一種很好的做法,以便正確設置 root 的環境,儘管在 FreeBSD 上預設設置顯式。)PATH``/usr/local/bin``su -``~root/.cshrc``PATH
否則檢查您的 shell 手冊頁並
alias
根據需要設置一個,但這實際上僅用於互動式使用,shell 腳本或 Makefile 不會觀察它。