confusão de notação

0

Tentando solucionar um erro que estou recebendo (tentando executar um programa que usa a cuda da nvidia), o guia de primeiros passos do CUDA diz:

Set up the development environment by modifying the PATH and LD_LIBRARY_PATH variables:

$ 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}}

Link: link

Eu devo substituir um dos "PATH" pelo caminho real? "$" Ou chaves significa que devo substituir o exemplo por meu próprio caminho?

Sou muito novo no Linux em geral, obrigado antecipadamente pelo seu tempo e paciência.

    
por Diio 24.01.2018 / 01:16

1 resposta

0

Não, você deve digitá-lo literalmente (com a exceção de $ , que serve apenas para indicar o prompt do seu shell).

A sequência ${PATH:+:${PATH}} é uma expansão de parâmetro - só é difícil de analisar porque um dos : s faz parte da sintaxe de expansão, enquanto o outro é literal.

A sintaxe básica é ${parameter:+word} , conforme explicado em BashGuide: Expansão de Parâmetros significa

If 'parameter' is null or unset, nothing is substituted, otherwise 'word' (which may be an expansion) is substituted.

No contexto acima, parâmetro é PATH e palavra é :${PATH} . Então, se PATH estiver vazio ou não definido (o que é muito improvável BTW), a exportação se torna apenas

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

Considerando que, se PATH não estiver vazia, ela se tornará

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

i.e. precede /usr/local/cuda-9.1/bin ao seu caminho existente, com o separador de dois pontos obrigatório.

TL; DR é uma maneira inteligente de evitar anexar um : falso no caso (raro) em que a variável PATH está vazia ou não está definida.

    
por steeldriver 24.01.2018 / 01:34