setfacl не работает с расширением фигурной скобки

В документах Symfony есть две команды для установки разрешений для папок кеша:

setfacl -R -m u:www-data:rwx app/cache setfacl -dR -m u:www-data:rwx app/cache

Более эффективным способом будет:

setfacl -R -m u:www-data:rwx -m d:u:www-data:rwx app/cache

Это работает для меня на Ubuntu 12.04. Однако попытка использовать расширение фигурной скобки, похоже, не работает:

setfacl -R {"-m ","-m d:"}u:www-data:rwx app/cache

выходы:

setfacl: Option -m: Invalid argument near character 1

Если я повторяю команду с фигурными скобками, а затем запускаю вывод, он работает:

echo setfacl -R {"-m d:","-m "}g:deploy:rwx . | source /dev/stdin

Что дает? Почему расширение не запускается само по себе?


person cmenning    schedule 12.09.2014    source источник


Ответы (1)


Два аргумента -m не разбиваются на слова. Они передаются как один аргумент в setfacl.

Когда вы повторяете строку через них.

$ c ()
{
    printf 'argc: %s\n' "$#";
    printf 'argv: %s\n' "$@"
}
$ c setfacl -R {"-m ","-m d:"}u:www-data:rwx app/cache
argc: 5
argv: setfacl
argv: -R
argv: -m u:www-data:rwx
argv: -m d:u:www-data:rwx
argv: app/cache
$ echo setfacl -R {"-m ","-m d:"}u:www-data:rwx app/cache | c $(< /dev/stdin)
argc: 7
argv: setfacl
argv: -R
argv: -m
argv: u:www-data:rwx
argv: -m
argv: d:u:www-data:rwx
argv: app/cache

При этом я не уверен, почему, навскидку, это не было бы разделением слов. Я бы подумал, что порядок расширения разделит результаты на слова, но .

person Etan Reisner    schedule 12.09.2014