符号混淆

符号混淆

尝试解决我遇到的错误(尝试运行使用 nvidia 的 cuda 的程序)时,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

我是否应该用实际路径替换其中一个“PATH”?“$”或花括号是否意味着我应该用自己的路径替换示例?

我对 Linux 还很陌生,在此先感谢您的时间和耐心。

答案1

不,您应该逐字输入(除了前导的$,它只是为了表明您的 shell 提示符)。

该序列${PATH:+:${PATH}}参数扩展- 它恰好是一个难以解析的语法,因为其中一个:s 是扩展语法的一部分,而另一个是文字。

基本语法${parameter:+word}如下:BashGuide:参数扩展方法

如果“参数”为空或未设置,则不替换任何内容,否则替换“单词”(可能是扩展)。

在上述背景下,范围PATH单词:${PATH}。因此,如果PATH为空或未设置(顺便说一下,这种情况不太可能发生),则导出将变为

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

相关内容