GUI 终端(?) 重置 $SHELL

GUI 终端(?) 重置 $SHELL

我一直在玩鱼壳住了几天,我喜欢它。为了通过快速启动器或菜单在终端中启动 Fish,我使用如下脚本:1

#!/bin/sh

export SHELL=/bin/fish
exec konsole  # <- KDE's terminal emulator

如果我从命令行运行此脚本,它会执行预期的操作:启动konsoleshell 为fish.

但从 KDE 启动器运行,$SHELL已重置,我得到了/bin/bash.更重要的是,如果我替换konsoleTerminal(来自 XFCE),即使在命令行中它也不起作用;终端启动并$SHELL重置。所以看来:

  • 无论如何,XFCETerminal都会重置。$SHELL
  • 从命令行启动时,KDEkonsole不会重置。$SHELL
  • $SHELL当应用程序通过启动器启动时,KDE 将重置。

如果我更改 中的默认 shell /etc/passwd,则一切都有效。没关系,除了有一些用户(我使用多个用户)我不想这样做,但我仍然想快速启动一个终端来使用 Fish。

请注意,系统上的任何位置都没有设置SHELL.中只有默认值/etc/passwd。另外,这不仅仅是 KDE 下的问题(它也会通过 发生fvwm)。我也搜索过 KDE 和 XFCE conf 目录。

我意识到这可能就是生活,但我想知道这里是否有我错过的东西,或者是否有人知道更具体的信息为什么会发生这种情况。


1. 事实上,这是SSCCE- 这令人恼火的原因是我喜欢启动一个打开两个选项卡运行的终端mc,这意味着解决方法不仅仅是打字fish。这也是为什么我不能-e在终端命令中使用类型开关的原因;这就是启动的内容mc,它使用基于 的子 shell $SHELL

答案1

对于 KDE,请查看$KDEDIR/share/apps/konsole文件路径shell,这篇文章与您的问题类似http://www.kde-forum.org/artikel/5064/configuring-and-customizing-konsole.html

相关内容