在 Linux 中登录特定 TTYn 后如何更改(永久)默认 shell?

在 Linux 中登录特定 TTYn 后如何更改(永久)默认 shell?

我知道该chsh命令用于在已安装的 shell 之间切换用户的登录 shell,但它可以工作不管登录的来源(tty1、tty2、ssh,...)。我想要实现的是csh从 tty7 登录,并bash在所有其他登录源上登录。

这到底可行吗?

答案1

不,又是。

不,登录 shell 与用户绑定,而不是与用户登录的 TTY 绑定。一个用户只能有一个特定的登录 shell。

是的,用户可以根据任何条件在登录 shell 的初始化文件中启动任何其他程序或实用程序。

例如,bash当前登录 shell 的用户可以将类似以下内容添加到其文件中,以便在虚拟终端 7 上登录时.bash_profile运行:csh

case $(tty) in
    */tty7) exec csh -l ;;
esac

exec csh -l会将当前 shell 替换为csh, 作为登录 shell 启动。

相关内容