notación confusión

Intentando solucionar un error que obtengo (al ejecutar un progtwig que usa el cuda de nvidia), la guía de inicio de CUDA dice:

Configure el entorno de desarrollo modificando las variables PATH y LD_LIBRARY_PATH:

$ export PATH=/usr/local/cuda-9.1/bin${PATH:+:${PATH}} $ export LD_LIBRARY_PATH=/usr/local/cuda-9.1/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

Enlace: http://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#ixzz553mlsUKP

¿Se supone que debo reemplazar uno de los “PATH” con el camino real? ¿Significan “$” o corchetes que debo reemplazar el ejemplo con mi propio camino?

Soy muy nuevo en Linux en general, gracias de antemano por su tiempo y paciencia.

No, debe escribirlo literalmente (con la excepción del $ inicial, que está destinado a indicar su indicador de shell).

La secuencia ${PATH:+:${PATH}} es una expansión de parámetros . Simplemente resulta complicado analizarla porque uno de los : s forma parte de la syntax de expansión, mientras que el otro es literal.

La syntax básica es ${parameter:+word} que, tal como se explica en BashGuide: significa Expansión de parámetros

Si ‘parámetro’ es nulo o no está definido, nada se sustituye, de lo contrario se sustituye ‘palabra’ (que puede ser una expansión).

En el contexto anterior, el parámetro es PATH y la palabra es :${PATH} . Por lo tanto, si PATH está vacío o no está configurado (lo que es muy improbable por cierto), entonces la exportación se convierte en

 export PATH=/usr/local/cuda-9.1/bin 

mientras que si PATH no está vacío, se convierte en

 export PATH=/usr/local/cuda-9.1/bin:$PATH 

es decir, ante /usr/local/cuda-9.1/bin a su ruta existente, con el separador de colon obligatorio.

TL; DR es una forma inteligente de evitar agregar un rastreo falso : en el caso (raro) de que la variable PATH esté vacía o sin configurar.