如何列出可供命令行使用的可用 shell?
答案1
要列出当时可用的有效登录 shell,请键入以下命令:
cat /etc/shells
例子:
pandya@pandya-desktop:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/ksh93
有关 shell 的信息,请访问维基百科。
答案2
您还可以使用
chsh -l
这将打印 shell 列表。
例子 :-
[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
答案3
至少在 OpenBSD 和 NetBSD 上:
$ getent shells
在 (Ubuntu) Linux 和许多其他 Unice(包括 BSD)上:
$ grep '^[^#]' /etc/shells
在 Solaris 上,该文件/etc/shells
可能不存在。有效 shell 的列表包含在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
答案4
如果你想深入研究/etc/passwd
,你可以这样做:
cut -d ':' -f 7 /etc/passwd | sort -u
H/T @schrodigerscatcuriosity 在https://unix.stackexchange.com/a/631346/40454