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

Ano*_*ous 4 linux shell scripting login tty

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

这完全可行吗?

Kus*_*nda 10

不,是的。

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

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

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

case $(tty) in
    */tty7) exec csh -l ;;
esac
Run Code Online (Sandbox Code Playgroud)

exec csh -l将用 , 替换当前外壳csh,作为登录外壳启动。