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에 나타납니다(이상하게도 일반적으로 포괄적인 릴리스 노트에는 변경 사항이 누락되어 있습니다:구글 검색). 모든 기능을 갖춘 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에서는 관찰되지 않습니다.

답변2

별칭을 만들고 bash에 추가하세요 ~/.bash_profile.

alias grep /usr/local/bin/grep

(다른 쉘도 비슷한 일을 할 수 있다고 확신합니다.) 이렇게 하면 개별 실행 파일을 선택할 수 있습니다. gnugrep시스템 별칭을 잃지 않으려면 별칭을 호출할 수도 있습니다.

답변3

경로의 시작 부분까지만 grep하십시오.

  • 디렉토리를 생성합니다 mkdir /override/bin.
  • 이 디렉토리에 심볼릭 링크를 넣거나 ln -s /usr/local/bin/grep /override/bin/gnu ln이 있는 경우 더 좋습니다 ln -s -t /override/bin/ /usr/local/bin/grep(잘못된 추적 감소).
  • /override/bin/경로의 시작 부분에 추가합니다 .

답변4

${PATH}를 변경하지 않으려면 grep앞서 입력한 ${PATH} 값에서 원하는 경로로 연결할 수도 있습니다.

예를 들어 /bin${PATH}의 두 번째 항목은 모든 사용자의 ${PATH} 값에 있을 수 있습니다.

따라서 루트로 다음을 수행할 수 있습니다.

cd /bin
ln -s /usr/local/bin/grep

관련 정보