Algo muy simple e ingenuo:
echo "$PATH"|grep -q whatever && echo "found it"
Donde todo lo que sea lo que usted está buscando. En lugar de &&
puede poner $?
en una variable o usar una declaración if
adecuada.
limitaciones incluyen:
- Lo anterior coincidirá con subcadenas de caminos más grandes (utilizar la concordancia en "bin" y es probable que lo encontrará, a pesar del hecho de que "bin" no se encuentra en su camino,/bin y/usr/bin son)
- Lo anterior no se expandirá automáticamente accesos directos como ~
o utilizando un Perl de una sola línea:
perl -e 'exit(!(grep(m{^/usr/bin$},split(":", $ENV{PATH}))) > 0)' && echo "found it"
Eso todavía tiene la limitación de que no hará expansiones de shell, pero no falla si una subcadena coincide. (Lo anterior coincide con "/usr/bin
", en caso de que no fuera claro).
Relacionado con el principio/final de la línea y dos puntos como en la respuesta de JasonWoof se ocupa de la limitación de coincidencia de su subcadena. La expansión de Tilde no es un problema común, ya que la mayoría de las personas permiten que se expanda cuando se asigna (por ejemplo, '' PATH = "~/bin: $ PATH' '), pero se puede solucionar con una sustitución si es necesario. – Cascabel
Bien, alguien votó negativamente esto después de 3.5 años. Y no dejó un comentario. Cojo. –
Estoy usando la solución grep que envuelve el patrón con dos puntos. – elias