![在 .profile 或 .xprofile 中导出 bash 函数会在登录期间终止 X](https://linux22.com/image/808157/%E5%9C%A8%20.profile%20%E6%88%96%20.xprofile%20%E4%B8%AD%E5%AF%BC%E5%87%BA%20bash%20%E5%87%BD%E6%95%B0%E4%BC%9A%E5%9C%A8%E7%99%BB%E5%BD%95%E6%9C%9F%E9%97%B4%E7%BB%88%E6%AD%A2%20X.png)
我正在尝试使用登录 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
关键字并确保函数名称后有括号,登录将再次起作用。