符号混乱

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

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

我对Linux一般都很陌生,提前感谢您的时间和耐心。

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

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

基本语法是${parameter:+word} ,如BashGuide中所述:参数扩展意味着

如果’parameter’为null或未设置,则不替换任何内容,否则将替换’word’(可能是扩展)。

在上面的上下文中, 参数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变量为空或未设置的情况下。