Вы сами ответили на свой вопрос. Страница руководства для login.defs
объясняет:
UMASK (number)
The file mode creation mask is initialized to this value. If not specified, the mask will be initialized to 022.
useradd and newusers use this mask to set the mode of the home directory they create
It is also used by pam_umask as the default umask value.
/etc/profile
выполняется оболочкой входа в систему. Если вход не через оболочку, umask, установленный в /etc/profile
, не действует.
Модуль
pam_umask
можно настроить для установки umask сеанса на значение, определенное в login.defs
. По сравнению с настройкой umask в /etc/profile
, umask, установленная в pam_umask
, также эффективна в ситуациях, когда вход в систему не выполняет графический сеанс оболочки входа в систему (, сеанс ssh без оболочки ).
Конструкция$(...)
(подстановка команд )является частью командного языка оболочки POSIX и требует наличия оболочки для ее интерпретации. Насколько я могу судить, средства запуска приложений, включенные в среду рабочего стола, не обязаны уметь интерпретировать командный язык оболочки; чтобы ошибиться на всякий случай, я бы предположил, что они могут только exec
использовать файл и передать ему список аргументов.
Вы должны иметь возможность определить сочетание клавиш, которое вызывает что-то вроде:
sh -c '"$(kreadconfig5...)"'
Подстановка команды заключена в двойные кавычки, чтобы гарантировать, что она не завершится ошибкой, если путь к файлу, созданный подставленной командой, содержит символы пробела.
Для полноты отметим, что это все равно не удастся, если имя исполняемого файла заканчивается одним или несколькими символами новой строки (крайне маловероятно, конечно ).