如何使用fish为xfce4-terminal创建GUI应用程序启动器但从bash继承环境变量?

hug*_*omg 4 bash xfce environment-variables fish xfce4-terminal

如果我fishbash提示符运行,它将继承我在我的.bashrc.profile文件中设置的环境变量,包括重要$PATH变量。到现在为止还挺好。

现在,我想要xfce4-terminal,我的终端模拟器,使用 fish 而不是 bash。我发现它支持一个-e命令行参数,但是如果我xfce4-terminal -e fish从 GUI 应用程序启动器1运行,那么我不会从 bash 获取环境变量。是什么赋予了?


1从交互式 bash 提示符启动 xfce4-terminal 也不起作用,但具有类似命令行开关的 gnome-terminal 起作用了。但是,从 GUI 快捷方式启动时, gnome-terminal 也没有获得变量。


编辑:从那以后,我就咬紧牙关,用chsh --shell /usr/bin/fish. 它比我之前尝试做的要简单得多,并且避免了在 bash 中运行 fish 的一些不良影响(例如将$SHELL环境变量设置为 bash)

hug*_*omg 5

当 bash 作为非交互式 shell 运行时,它不会获取.bashrc文件,如果您使用图形显示管理器,那么用于运行 GUI 启动程序命令的登录 shell可能不会获取.profile文件。因此,使用 GUI 启动器运行的命令在运行时可能没有设置所需的环境变量。

我发现的一种解决方法是告诉终端模拟器以交互模式运行 bash(使用 -i 标志),然后立即在其中运行 fish:

xfce4-terminal -e 'bash -i -c fish'
Run Code Online (Sandbox Code Playgroud)