${PATH:+:${PATH}}
- это синтаксис sh
, используемый на языке программирования / сценариев sh
.Linux не знает или не понимает этот синтаксис.
Поскольку вы используете Python, вы должны использовать вместо него синтаксис Python.
Вот документация Bash для этой функции:
${parameter:+word}
Use Alternate Value. If parameter is null or unset,
nothing is substituted, otherwise the expansion of word
is substituted.
Таким образом, прямой перевод на Python будет:
((":" + os.environ['PATH']) if os.environ['PATH'] else "")
В этом нет ничего волшебного, на обоих языках это просто сокращение:
if os.environ['PATH']:
# The path already had values, prepend ours with a colon:
os.environ['PATH'] = "/usr/local/cuda-9.0/bin" + ":" + os.environ['PATH']
else:
# The path was empty, just set it to our directory without a colon
os.environ['PATH'] = "/usr/local/cuda-9.0/bin"
Цель этого состоит в том, чтобы избежатьзавершающий двоеточие, если путь еще не был установлен.Если вместо этого вы просто набрали:
os.environ['PATH'] = "/usr/local/cuda-9.0/bin" + ":" + os.environ['PATH']
, тогда путь может в итоге составить всего /usr/local/cuda-9.0/bin:
, а конечное двоеточие может потенциально вызвать проблемы, если добавить текущий каталог в путь поиска.