FreeBSDでGNU grepをデフォルトにする方法は?

FreeBSDでGNU grepをデフォルトにする方法は?

私は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で目的のタスクを実行する最良の方法は何ですか?

ベストアンサー1

修正する:この回答は2013年の回答であり、FreeBSD 8.x以前に適用されます。 ㅏBSD grepに追加される改訂 222273FreeBSD-9.0に表示されます(奇妙なことに、一般的に包括的なリリースノートには変更がありません:Google検索)。すべての機能を備えたGNU grepはまだ有効です。ポートコレクションにあります。


FreeBSDgrep はい 以前は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非常に安全ですPATH/usr/local/bin私は通常何をする。 (FreeBSDではデフォルトは明示的ですが、最善の方法はsu -ルート環境を正しく設定することです。)~root/.cshrcPATH

それ以外の場合は、シェルのマニュアルページを確認し、必要に応じて設定してくださいalias。ただし、これは実際に対話型の使用にのみ当てはまり、シェルスクリプトやMakefileでは観察されません。

おすすめ記事