замещение замещения

Попытка устранить ошибку, которую я получаю (пытается запустить программу, использующую cuda nvidia), руководство CUDA по началу работы говорит:

Настроить среду разработки, изменив переменные PATH и 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}}

Ссылка: http://docs.nvidia.com/cuda/cuda-quick-start-guide/index.html#ixzz553mlsUKP

Я должен заменить один из «ПУТЕЙ» с фактическим путем?

Я очень новичок в Linux в целом, заблаговременно за ваше время и терпение.

0
задан 24 January 2018 в 05:16

3 ответа

Нет, вы должны набирать его дословно (за исключением ведущего $, который предназначен только для указания приглашения вашей оболочки).

Последовательность ${PATH:+:${PATH}} является расширением параметра - it просто бывает сложным для синтаксического анализа, потому что один из : s является частью синтаксиса расширения, а другой - литералом.

Основной синтаксис - ${parameter:+word}, который, как объясняется в BashGuide : Параметр Расширение означает

Если «параметр» равен нулю или не задан, ничего не заменяется, иначе слово «(которое может быть расширением) заменяется.

В приведенном выше контексте расширение параметра есть PATH, а слово - :${PATH}. Таким образом, если PATH пуст или не задан (что очень маловероятно BTW), тогда экспорт становится просто

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

, тогда как если PATH не пуст, он становится

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

т.е. добавляет /usr/local/cuda-9.1/bin к вашему существующему пути с обязательным разделителем двоеточия.

TL; DR это умный способ предотвратить добавление ложного трейлинга : в (редком) случае, когда переменная PATH пуст или не установлен.

0
ответ дан 22 May 2018 в 15:20

Нет, вы должны набирать его дословно (за исключением ведущего $, который предназначен только для указания приглашения вашей оболочки).

Последовательность ${PATH:+:${PATH}} является расширением параметра - it просто бывает сложным для синтаксического анализа, потому что один из : s является частью синтаксиса расширения, а другой - литералом.

Основной синтаксис - ${parameter:+word}, который, как объясняется в BashGuide : Параметр Расширение означает

Если «параметр» равен нулю или не задан, ничего не заменяется, иначе слово «(которое может быть расширением) заменяется.

В приведенном выше контексте расширение параметра есть PATH, а слово - :${PATH}. Таким образом, если PATH пуст или не задан (что очень маловероятно BTW), тогда экспорт становится просто

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

, тогда как если PATH не пуст, он становится

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

т.е. добавляет /usr/local/cuda-9.1/bin к вашему существующему пути с обязательным разделителем двоеточия.

TL; DR это умный способ предотвратить добавление ложного трейлинга : в (редком) случае, когда переменная PATH пуст или не установлен.

0
ответ дан 17 July 2018 в 22:21

Нет, вы должны набирать его дословно (за исключением ведущего $, который предназначен только для указания приглашения вашей оболочки).

Последовательность ${PATH:+:${PATH}} является расширением параметра - it просто бывает сложным для синтаксического анализа, потому что один из : s является частью синтаксиса расширения, а другой - литералом.

Основной синтаксис - ${parameter:+word}, который, как объясняется в BashGuide : Параметр Расширение означает

Если «параметр» равен нулю или не задан, ничего не заменяется, иначе слово «(которое может быть расширением) заменяется.

В приведенном выше контексте расширение параметра есть PATH, а слово - :${PATH}. Таким образом, если PATH пуст или не задан (что очень маловероятно BTW), тогда экспорт становится просто

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

, тогда как если PATH не пуст, он становится

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

т.е. добавляет /usr/local/cuda-9.1/bin к вашему существующему пути с обязательным разделителем двоеточия.

TL; DR это умный способ предотвратить добавление ложного трейлинга : в (редком) случае, когда переменная PATH пуст или не установлен.

0
ответ дан 23 July 2018 в 23:00

Другие вопросы по тегам:

Похожие вопросы: