Do not expand string inside variable

У меня несколько другой взгляд на этот вопрос.
Хотя все в jlliagre ответе верно, для меня практическое применение при развертывании программного обеспечения в кластере сводится к переменным среды по умолчанию и повторное использование библиотек по умолчанию.

Проще говоря - / usr / local и все его дочерние каталоги находятся в соответствующих переменных окружения, таких как PATH и MANPATH и / usr / local / lib {, 64} находятся в файле ldconfig ( /etc/ld.so.conf.d/ ).

/ opt / OTOH не является - что является преимуществом, когда требуется, чтобы несколько версий или конфликтующие пакеты сосуществовали в системе, но требует некоторого управления средой (например, environment-modules ] или коллекций программного обеспечения ), и невыгоден тем, что потенциально может «тратить» пространство памяти на дублирование разделяемых библиотек, поскольку каждая установка в / opt может быть полностью автономной.

Для совместной работы / usr / local предполагается, что, например, двоичные файлы устанавливаются непосредственно в / usr / local / bin (и страницы руководства, соответствующие / usr / local / share / man / ... ), а не в / usr / local / app / {bin, share / man, ...} и т. д.

0
05.10.2018, 18:41
2 ответа

Используйте ''вместо ""

.
a='$(date)'
0
28.01.2020, 02:42

Вы не можете использовать двойные кавычки, так как присваивание произошло в первой строке. Если вы не избежите знака доллара:

$ a="\$(date)"
$ echo "$a"
$(date)
$ eval echo "$a"
Fri 5 Oct 18:53:45 CEST 2018

И с одинарными кавычками вы можете сделать это:

$ a='$(date)'
$ echo "$a"
$(date)
$ eval echo "$a"
Fri 5 Oct 16:45:45 CEST 2018
2
28.01.2020, 02:42

Теги

Похожие вопросы