少なくともOpenBSDおよびNetBSD:
$ getent shells
(Ubuntu)Linuxおよび他の多くのUnices(BSDを含む):
$ grep '^[^#]' /etc/shells
Solarisでは、ファイル/etc/shells
が存在しない場合があります。有効なシェルのリストはshells(4)
マニュアルに含まれています。私の通常のSolaris 11.3システムでは、次のシェルがリストされます。
/bin/bash /usr/bin/bash /bin/pfbash /usr/bin/pfbash
/bin/csh /usr/bin/csh /bin/pfcsh /usr/bin/pfcsh
/bin/jsh /usr/bin/jsh /sbin/jsh /usr/sbin/jsh
/bin/ksh /usr/bin/ksh /bin/pfksh /usr/bin/pfksh
/bin/ksh93 /usr/bin/ksh93 /bin/pfksh93 /usr/bin/pfksh93
/bin/sh /usr/bin/sh /bin/pfsh /usr/bin/pfsh
/bin/tcsh /usr/bin/tcsh /bin/pftcsh /usr/bin/pftcsh
/sbin/sh /usr/xpg4/bin/sh /sbin/pfsh /usr/xp4/bin/pfsh
/bin/zsh /usr/bin/zsh /bin/pfzsh /usr/bin/pfzsh
/usr/sfw/bin/zsh
私のインストールでは、存在/usr/sfw/bin/zsh
も/usr/xp4/bin/pfsh
存在もしていないことに注意する価値があります...
有効なSolarisシェルの短いリスト(各シェルの重複を削除):
/bin/bash /bin/ksh /bin/pfcsh /bin/pfsh /bin/sh
/bin/csh /bin/ksh93 /bin/pfksh /bin/pftcsh /bin/tcsh
/bin/jsh /bin/pfbash /bin/pfksh93 /bin/pfzsh /bin/zsh
(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)
Debianシステムでは、これはおおよその目安になりそうです。