Como tornar o GNU grep o padrão no FreeBSD?

2

Estou executando o FreeBSD 9.1-RELEASE. Eu instalei o GNU grep com portmaster textproc/gnugrep .

No entanto, o grep "padrão" para os usuários ainda é o FreeBSD grep.

# /usr/local/bin/grep -V
/usr/local/bin/grep (GNU grep) 2.12

# grep -V
grep (GNU grep) 2.5.1-FreeBSD

Eu quero fazer o GNU grep o padrão. Eu entendo que o problema está na ordem dos diretórios especificados na minha variável de ambiente PATH :

# echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/root/bin

No entanto, receio mover a entrada /usr/local/bin para o início do meu PATH . É seguro?

Em distribuições Linux como Debian, tais tarefas geralmente são realizadas via dpkg-divert e / ou update-alternatives .

Qual é a melhor maneira de fazer o que eu quero no FreeBSD e não quebrar as atualizações do sistema e tal?

    
por vadipp 21.02.2013 / 11:05

3 respostas

0

Se você não quiser alterar seu $ {PATH}, alternativamente, basta vincular à grep que você gosta de uma entrada antecipada do valor $ {PATH}.

por exemplo, /bin é a segunda entrada do seu $ {PATH} e provavelmente está nos valores de $ {PATH} de todos os usuários.

para que você possa fazer isso como root:

cd /bin
ln -s /usr/local/bin/grep
    
por 21.02.2013 / 11:10
3

FreeBSD grep é GNU grep , com alguns patches aplicados:

# 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.

Tem um pequeno número de patches (a maioria dos quais são originários do Fedora Linux), se você tem /usr/src/ instalado, estes são detalhados em /usr/src/gnu/usr.bin/grep/FREEBSD-upgrade .

Se você precisar de algo especificamente na versão de porta (2.12 vs 2.5.1), há muitas correções de bugs, melhorias de velocidade e suporte a PCRE ( -P , não ativado na versão do sistema), deve ser seguro reordenar seu PATH , isso é o que eu costumo fazer. (É uma boa prática para su - para que o ambiente do root esteja correto, embora no FreeBSD o padrão ~root/.cshrc defina o PATH explicitamente.)

Caso contrário, verifique sua página de manual do shell e defina um alias conforme necessário, mas isso é apenas para uso interativo, scripts de shell e Makefiles não o observam.

    
por 21.02.2013 / 11:41
1

Basta criar um alias, no bash add ao seu ~/.bash_profile :

alias grep /usr/local/bin/grep

(Acredito que outras shells podem fazer algo similar.) Dessa forma, você pode escolher entre executáveis individuais. Até mesmo chame seu alias de gnugrep se você não quiser perder o sistema.

    
por 21.02.2013 / 20:42