es的环境怎么设置呢?

es的环境怎么设置呢?

我一直在玩英语最近几天,它(像 rc 一样)有一个怪癖/功能,即它只.esrc在登录时运行其启动脚本 ( )。在每个交互式会话中运行代码的常用方法是将代码放入%prompt函数中。

当然,如果从未运行过,则没有任何%prompt功能。es -l

那么,问题是:当您通过 gdm 或类似的仅源 .profile(或 .xprofile、.xsession 等)进入时,如何设置登录环境?我想出的最好的办法是:

if [ -f "$HOME/.esrc" ]; then
    eval "`es -l <<-x
        sh <<<'export -p'
    x`"
fi

这看起来……很可怕。还有更好的方法吗?

答案1

由于没有人有真正的答案,这是我的可怕的黑客。某些 shell(例如 *rxvt)具有允许强制登录 shell 的设置。因此,在您的 中.Xdefaults,您可以添加类似于

urxvt256c-ml:loginShell: true

这意味着urxvt256c-ml您启动的所有终端默认都会有一个登录 shell。

这些帮助有用?

答案2

这么多年后回答我自己的问题, gnome-session 现在似乎做了一些魔法,从登录 shell 中提取环境变量并告诉 dbus 有关它们的信息,并且 .profile 不运行:

https://gitlab.gnome.org/GNOME/gnome-session/-/blob/ef9f3039bdb48e008cd59e46aac442811bc40f09/gnome-session/gsm-util.c#L545

不幸的是,它也拒绝导出它不喜欢的东西,其中(在 2023 年)包括长字符串,因为:

https://gitlab.gnome.org/GNOME/glib/-/issues/2824

相关内容