符号混乱
试图解决我遇到的错误(尝试运行使用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
变量为空或未设置的情况下。