foo=$bar
является безопасным , потому что это присваивание и присваивание скалярной переменной с использованием синтаксиса скалярного присваивания. Это скалярный контекст , в
$var
может храниться только одно значение, не имеет смысла разбивать или объединять$bar
. Если в результате раскрытия получилось несколько слов, оболочке нужно было каким-то образом снова их объединить, чтобы иметь возможность сохранить их как одну строку в$foo
.Другое дело, когда вы используете:
foo=($bar)
Где вы присваиваете значение переменной массива. Там это контекст списка. Вы назначаете ряд слов элементам массива. происходит расщепление+глобус.
Также остерегайтесь двойной -природы таких вещей, как
export
/local
/typeset
/declare
/readonly
в некоторых оболочках (более подробно объяснено в Являются кавычками необходимо для назначения локальной переменной?)Вы заметите, что:
foo=$bar
анализируется как присвоение, а
"foo"=$bar
— это просто попытка запустить команду
foo=content_of_bar
(, в которой содержимое bar подлежит разделению + подстановке ).В оболочках, где
export
(и другиеlocal
/typeset
... )являются ключевыми словами и встроенными (ksh, bash и последними версиями zsh ), в:export foo=$bar
export
распознается как ключевое слово , аfoo=$bar
как присваивание, поэтому$bar
не подлежит разделению+подстановке. Но нужно совсем немного, чтобыexport
перестало распознаваться как ключевое слово . В этом случае он просто обрабатывается как простая команда, а split+glob происходит так же, как и любой аргумент любой другой команды.И даже в тех случаях, когда
export
рассматривается как ключевое слово, если аргументы не выглядят как присвоения переменных (, как в"foo"=$bar
выше ), они обрабатываются как обычные аргументы. и снова подлежит split+glob.
Если вы используете NextCloud, то существует отчет об ошибке для спам-сообщений журнала, которые вы описываете. Я также получаю их на своем рабочем столе Fedora 29 Cinnamon. С клиентом nextcloud --2.6.1 -1.fc29.x86 _64.
Похоже, что это исправлено на Nextcloud (по состоянию на 7 декабря 2019 года ), поэтому мы, использующие Fedora, просто ждем выпуска пакета.
По-видимому, версия 2.6.0 клиента не демонстрирует такого поведения. И они подтверждают, что в v2.6.2 есть исправление.