回答:
Freenodeの#suseチャネルでこれについて尋ねたところ、MiukuはArulと同じことを提案しましたが、Windowsドメインを使用している場合はloginShell属性を設定できるという2つのことを述べました。
悲しいことに、私はsambaドメインにいるので、助けにはなりませんでした。しかし、彼の最後の提案は完璧であり、次の結果を得ます。
getent passwd USERNAME
これにより、ユーザーの/ etc / passwdに相当する有効なエントリが作成され、これを/ etc / passwdに貼り付けて、最後に使用するシェルの有効なパスのシェルを更新します。この方法では、すべてのユーザーに対して変更されるわけではなく、変更を行う前に、これを構成しているマシン上にシェルがあることを確認できます。
私はまったく同じ問題を抱えていました。ドメイン内のすべてのマシンに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
シェルプロセスをシェルプロセスに置き換えるために使用する方が良いとzsh
思いませんか?
sambaドメインコントローラーの構成を編集するアクセス権がある場合は、smb.confでシェルを設定できる次のプロパティを設定できます。
template shell = /bin/zsh
zshがインストールされていないマシンにログインするとどうなるかわかりません(デフォルトではすべてのディストリビューションにzshがインストールされているわけではありません)
単に試してみたい場合は、zshと入力してサブシェルを取得してください。
zsh
インストールしたすべてのユーザー。これを特定のユーザーに制限できるかどうかはわかりidmap uid
ませんが、それを可能にするパラメーターを確認します。
getent passwd `id -un` | sudo tee -a /etc/passwd
。すべてのシェルで動作するかどうかはわかりませんが、少なくともbashとtcshは問題ありません。