Экспорт функции bash в .profile или .xprofile убивает X при входе в систему

Я пытаюсь экспортировать функцию bash во время входа в Gnome, используя один из сценариев запуска оболочки входа. Я пытался сделать это в ~ / .profile и ~ / .xprofile, но это привело к смерти и перезапуску X на экране входа в систему.

Я могу без проблем экспортировать переменные окружения из этих сценариев при входе в Gnome; только экспорт функции (любой функции, независимо от содержимого) убивает X.

Я также могу получить оба сценария из терминала, и функция экспортируется, как и ожидалось, без каких-либо проблем. Функция также отлично экспортируется, если сценарии вызываются оболочкой входа bash (bash -l) из терминала.

Почему при входе в Gnome происходит экспорт функции, убивающей X? / Могу ли я что-нибудь сделать, чтобы это исправить?

(я понимаю, что могу экспортировать функцию из .bashrc, но использование профиля более удобно в моей ситуации, и я хотел бы понять, почему происходит этот сбой. )

2
задан 14 February 2011 в 22:54

2 ответа

POSIX sh не позволяет экспортировать функции, но bash делает это. ~/.profile источником является оболочка POSIX, а не bash. Экспортировать функции также бессмысленно, поскольку только bash может их читать и использовать. Просто поместите функции в ~/.bashrc и не экспортируйте их.

0
ответ дан 14 February 2011 в 22:54

Принятый ответ неверен. POSIX-совместимые оболочки позволяют экспортировать функции.

Ваша проблема, вероятно, в том, что вы использовали ключевое слово function. Синтаксис POSIX не использует function. Удалите ключевое слово function и убедитесь, что у вас есть круглые скобки после того, как имя функции и логин будут работать снова.

0
ответ дан 14 February 2011 в 22:54

Другие вопросы по тегам:

Похожие вопросы: