至少在OpenBSD和NetBSD上:
$ getent shells
在(Ubuntu)Linux和许多其他Unices(包括BSD)上:
$ grep '^[^#]' /etc/shells
在Solaris上,该文件/etc/shells
可能不存在。有效外壳列表包含在shells(4)
手册中。在我的原始Solaris 11.3系统上,它列出了以下shell:
/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 Shell的简短列表(删除的每个Shell的副本):
/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系统上似乎提供了一个很好的近似值。