Я пытаюсь экспортировать функцию bash во время входа в Gnome, используя один из сценариев запуска оболочки входа. Я пытался сделать это в ~ / .profile и ~ / .xprofile, но это привело к смерти и перезапуску X на экране входа в систему.
Я могу без проблем экспортировать переменные окружения из этих сценариев при входе в Gnome; только экспорт функции (любой функции, независимо от содержимого) убивает X.
Я также могу получить оба сценария из терминала, и функция экспортируется, как и ожидалось, без каких-либо проблем. Функция также отлично экспортируется, если сценарии вызываются оболочкой входа bash (bash -l
) из терминала.
Почему при входе в Gnome происходит экспорт функции, убивающей X? / Могу ли я что-нибудь сделать, чтобы это исправить?
(я понимаю, что могу экспортировать функцию из .bashrc, но использование профиля более удобно в моей ситуации, и я хотел бы понять, почему происходит этот сбой. )
POSIX sh не позволяет экспортировать функции, но bash делает это. ~/.profile
источником является оболочка POSIX, а не bash. Экспортировать функции также бессмысленно, поскольку только bash может их читать и использовать. Просто поместите функции в ~/.bashrc
и не экспортируйте их.
Принятый ответ неверен. POSIX-совместимые оболочки позволяют экспортировать функции.
Ваша проблема, вероятно, в том, что вы использовали ключевое слово function
. Синтаксис POSIX не использует function
. Удалите ключевое слово function
и убедитесь, что у вас есть круглые скобки после того, как имя функции и логин будут работать снова.