Linux 如何更改OpenWrt的默认shell?

Linux 如何更改OpenWrt的默认shell?,linux,openwrt,fish,busybox,ash,Linux,Openwrt,Fish,Busybox,Ash,OpenWrt的默认shell是ash,但我想将其更改为fish 当我运行chsh-s/usr/bin/fish(fish的绝对路径)时,它返回-ash:chsh:notfound 我将/etc/passwd的第一行更改为: root:x:0:0:root:/root:/bin/ash 致: root:x:0:0:root:/root:/usr/bin/fish 我无法再次登录(密码错误),系统日志显示: authpriv.warn dropbear[14288]:用户“root”的shell无

OpenWrt的默认shell是
ash
,但我想将其更改为
fish

当我运行
chsh-s/usr/bin/fish
(fish的绝对路径)时,它返回
-ash:chsh:notfound

我将
/etc/passwd
的第一行更改为:

root:x:0:0:root:/root:/bin/ash

致:

root:x:0:0:root:/root:/usr/bin/fish

我无法再次登录(密码错误),系统日志显示:

authpriv.warn dropbear[14288]:用户“root”的shell无效,已被拒绝


是否有其他方法可以更改默认shell


(顺便说一句,我正在使用而不是,但这似乎不是这个问题的原因)

有两种方法可以解决这个问题。您可以:


/usr/bin/fish
添加到
/etc/shells
上述意见中提供了该解决方案

或:

dropbear
替换为
openssh服务器
我找到了另一种方法:如果您碰巧安装了
openssh服务器
,我建议您这样做


并记住将/etc/passwd的第一行更改为:


root:x:0:0:root:/root:/usr/bin/fish

有两种方法可以解决此问题。您可以:


/usr/bin/fish
添加到
/etc/shells
上述意见中提供了该解决方案

或:

dropbear
替换为
openssh服务器
我找到了另一种方法:如果您碰巧安装了
openssh服务器
,我建议您这样做


并记住将/etc/passwd的第一行更改为:


root:x:0:0:root:/root:/usr/bin/fish

您是否将/usr/bin/fish添加到/etc/shells?将
/usr/bin/fish
添加到
/etc/shells
工作!这真是个坏主意。如果您经常在路由器上打开交互式shell,以至于不得不更改默认shell,而不仅仅是键入
exec fish
,有点不对劲。@KurtisRader我可以问一下为什么经常使用你的路由器外壳是不对的吗?你把/usr/bin/fish添加到/etc/shell了吗?把
/usr/bin/fish
添加到
/etc/shell
工作了!这真是个坏主意。如果您经常在路由器上打开一个交互式外壳,以至于不得不更改默认外壳,而不仅仅是键入
exec fish
,那么就有问题了。@KurtisRader我可以问一下为什么经常使用路由器外壳是错的吗?