Konsole 不运行 /etc/passwd 中指定的 shell

Konsole 不运行 /etc/passwd 中指定的 shell

我已经在 Fedora 和 Gnome 上使用 Bash 很长时间了,最​​近改用 Arch Linux、Plasma 和 ZSH。我设置了 zsh、file、used chsh -s $(which zsh),并且它有效。但是,每次运行 Konsole bash 都会自动运行,我必须手动调用zsh.这是我所知道的:

echo $SHELL返回/bin/bash

cat /etc/passwd | grep $LOGNAME将我的 shell 显示为 /usr/bin/zsh

当我登录到 tty(非图形)时,ZSH 默认运行。

更新 1:“首选项/配置/常规”选项卡没有“命令”选项,并且用户设置中没有与我的 shell 相关的 GUI 选项。

答案1

Settings>Configure Konsole>Profiles

编辑相关配置文件并更改Command字段。

答案2

在我看来,KDE 和 Konsole应该尊重默认选项。为了强制执行,您可以使用这个小脚本:

$ sudo vi /usr/local/bin/shell.sh

#!/bin/sh

PSHELL=$(getent passwd $USER|cut -d: -f7)

eval "$PSHELL"

允许它运行:

$ sudo chmod +x /usr/local/bin/shell.sh

然后去你的康索尔轮廓

Settings>Configure Konsole>Profiles>Edit Profile>General Tab>Command

改成/bin/bash/usr/local/bin/shell.sh

从现在开始,如果您使用chsh -s /bin/someshell康索尔会尊重你的选择。

要查看可用的 shell,请使用:

cat /etc/shells

示例输出:

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/bin/zsh
/usr/bin/zsh

注1:不建议shell.sh添加/etc/shells。让它只是为了康索尔配置。

注 2:如果您愿意,可以将其保存在不同的文件夹中。例如,如果您只有一个用户,那么一个好地方就是~/bin/shell.sh现在您甚至不需要 sudo。

相关内容