Answers:
我在Freenode的#suse频道中问了这个问题,而Miuku提出了与Arul相同的建议,但是他提到了两件事,如果我使用的是Windows域,则可以设置loginShell属性。
可悲的是,我在samba域中,所以没有帮助。但是他的最终建议是完美的,得到以下输出:
getent passwd USERNAME
这将在/ etc / passwd中为您的用户提供等效的有效条目,然后将其粘贴到/ etc / passwd中,并在末尾更新Shell以获取要使用的Shell的有效路径。这样,它不会为所有用户更改它,并且可以在进行更改之前确保外壳程序位于要配置它的计算机上。
我有完全一样的问题。由于不是我域中的所有机器都安装了zsh,并且由于我不想影响所有用户,所以最终放入了.bashrc:
if [ -x /usr/bin/zsh ]; then
echo 'starting zsh'
# export SHELL=/bin/zsh #edit: this is probably not what you want, see the comment.
exec /usr/bin/zsh
fi
这可能不太优雅,但至少可以完成工作。
/usr/bin/zsh
,而不是使用exec /usr/bin/zsh
用bash
shell进程代替shell进程会更好zsh
吗?
如果您有权编辑samba域控制器配置,则可以设置以下属性,该属性允许您在smb.conf中设置外壳程序。
template shell = /bin/zsh
不知道如果登录未安装zsh的计算机会发生什么情况(默认情况下并非所有发行版都安装了zsh),但是我猜测它会调用发行版默认shell。
如果您只是想尝试,只需键入zsh即可得到一个子shell,我相信您已经知道了。
zsh
安装的用户。我不确定您是否可以将其限制为特定用户,但是我会检查idmap uid
可能允许您执行此操作的参数。
getent passwd `id -un` | sudo tee -a /etc/passwd
。不确定它是否在所有shell中都有效,但至少bash和tcsh可以。