我一直在玩鱼壳住了几天,我喜欢它。为了通过快速启动器或菜单在终端中启动 Fish,我使用如下脚本:1
#!/bin/sh
export SHELL=/bin/fish
exec konsole # <- KDE's terminal emulator
如果我从命令行运行此脚本,它会执行预期的操作:启动konsole
shell 为fish
.
但从 KDE 启动器运行,$SHELL
已重置,我得到了/bin/bash
.更重要的是,如果我替换konsole
为Terminal
(来自 XFCE),即使在命令行中它也不起作用;终端启动并$SHELL
重置。所以看来:
- 无论如何,XFCE
Terminal
都会重置。$SHELL
- 从命令行启动时,KDE
konsole
不会重置。$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