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.