尝试解决我遇到的错误(尝试运行使用 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