当 chsh 不存在时如何设置默认 shell

当 chsh 不存在时如何设置默认 shell

我有一个运行 Busybox 的 Synology DS412+ NAS 盒,它的默认 shell 是ash。以前,ipkg install optware-devel运行 并安装它bash并将其设置为默认 shell。运行ipkg install zsh已安装zsh但未将其设置为默认 shell。chsh不存在(Busybox 假定系统已精简并且只会ash使用),那么我该如何设置默认 shell?

如有任何帮助或见解我将不胜感激。

答案1

您可以通过编辑来更改登录 shell /etc/passwd。每行都是以冒号分隔的值的列表,最后一个值是登录 shell:

user:x:1000:1000:User:/home/user:/usr/bin/zsh

如果/etc/shells存在,您应该向其中添加 zsh(完整路径),否则某些服务可能无法为您的用户使用。

笔记:

zsh如果某个磁盘上安装了root(或任何您需要用于管理目的的用户)的登录 shell,我建议不要更改该 shell 。您可能希望在没有安装磁盘的情况下仍拥有 root 访问权限。

您始终可以zsh从 ash 的用户配置中自动启动。类似这样的

[ -x /usr/bin/zsh ] && exec /usr/bin/zsh

答案2

另一种方法来自 Synoloogy 论坛上的这篇文章:

https://community.synology.com/enu/forum/1/post/150323

在您选择的编辑器(例如 nano)中,将以下行添加到:~/.profile

导出 SHELL=/bin/bash exec /bin/bash

其中 /bin/bash 是你选择的 shell 的路径

相关内容