Хорошо, я нашел ответ здесь в Википедии:
Когда поясняется опция X
:
...Он применяет разрешения на выполнение к каталогам независимо от их текущие разрешения и применяет разрешения на выполнение к файлу, который уже имеет по крайней мере, один бит разрешения на выполнение уже установлен (либо владелец, группа или другое) ...
Я действительно не могу понять, почему кто-то может захотеть применить разрешение x
для любого пользователя (владельца, группы или другого), если другой пользователь уже у вас уже есть это разрешение... или, другими словами, дайте другим
разрешение на выполнение, если оно есть у владельца
, но кто-то счел это лучшим поведением по умолчанию, и вот как оно работает, пойди разберись .
Я изменил свой код на:
chmod -R ugo=r,a+X,ug+x
поскольку порядок имеет значение, теперь он будет вести себя так, как ожидалось.
Если вы хотите разделить имена файлов новой строкой, установите IFS на $ '\ n'
и отключите подстановку:
set -f
IFS=$'\n' files=($(grep -o '^[^:]*' /tmp/mimes))
set +f
Обратите внимание, что это не работает, если ваши имена файлов содержат символы новой строки (в дополнение к двоеточиям, которые прерываются из-за того, как вы извлекаете имена с помощью grep).