Se você estiver verificando o conteúdo da variável de ambiente PATH
, em vez de procurar algo em um arquivo, então grep
é a ferramenta errada. É mais fácil (e mais rápido e indiscutivelmente mais legível) fazê-lo no shell.
No bash, ksh e zsh:
if [[ :$PATH: = *:/opt/gnome:* ]]; then
: # already there
else
PATH=$PATH:/opt/gnome
fi
Portável:
case :$PATH: in
*:/opt/gnome:*) :;; # already there
*) PATH=$PATH:/opt/gnome;;
esac
Observe o uso de :$PATH:
em vez de $PATH
; Dessa forma, o componente é sempre cercado por dois pontos na string de pesquisa, mesmo que estivesse no início ou no final de $PATH
.
Se você estiver pesquisando por meio de uma linha de um arquivo, poderá usar o regexp estendido (ou seja, exigindo grep -E
) (^|:)/opt/gnome($|:)
para corresponder a /opt/gnome
, mas somente se estiver no início de uma linha ou após dois pontos, e apenas se estiver no final da linha ou seguido de dois pontos.