在 .profile 或 .xprofile 中导出 bash 函数会在登录期间终止 X

在 .profile 或 .xprofile 中导出 bash 函数会在登录期间终止 X

我正在尝试使用登录 shell 启动脚本之一在 Gnome 登录期间导出 bash 函数。我尝试在 ~/.profile 和 ~/.xprofile 中执行此操作,但结果 X 死机并在登录屏幕上重新启动。

我可以在 Gnome 登录期间毫无问题地从这些脚本导出环境变量;仅导出一个函数(任何函数,无论内容如何)就会终止 X。

我还可以从终端获取这两个脚本,并且函数可以按预期导出,没有任何问题。如果脚本bash -l由终端中的 bash 登录 shell ( ) 调用,函数也可以正常导出。

为什么在 Gnome 登录时导出一个函数会导致 X 死亡?/我能做些什么来修复它?

(我意识到我可以从 .bashrc 导出该函数,但在我的情况下使用配置文件更方便,而且我想了解为什么会发生这种崩溃。)

答案1

POSIX sh 不允许导出函数,但 bash 允许。~/.profile由 POSIX shell 而不是 bash 提供。导出函数也是毫无意义的,因为只有 bash 可以读取和使用它们。只需将函数放入 中~/.bashrc,不要导出它们。

答案2

接受的答案是错误的。符合 POSIX 标准的 shell 确实允许导出函数。

您遇到的问题可能是因为您使用了关键字function。POSIX 语法不使用function。删除function关键字并确保函数名称后有括号,登录将再次起作用。

相关内容