Làm thế nào để tìm danh sách các shell có sẵn bằng dòng lệnh?


20

Làm thế nào để liệt kê các shell có sẵn để sử dụng theo dòng lệnh?


(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)trên một hệ thống Debian dường như đưa ra một xấp xỉ tốt.
Stéphane Chazelas

Trên Fedora 20, nó trả về /bin/bash /bin/crash /bin/gdb(và các liên kết tượng trưng từ /usr/bin).
Cristian Ciupitu

Câu trả lời:


30

Để liệt kê các shell đăng nhập hợp lệ có sẵn để sử dụng tại thời điểm, hãy gõ lệnh sau:

cat /etc/shells

Thí dụ:

pandya@pandya-desktop:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
/bin/ksh93

Để biết thông tin về shell hãy truy cập wikipedia .


Lưu ý rằng điều này sẽ không hoạt động cho tất cả các hệ thống. Ví dụ: Solaris và HP-UX không có tệp / etc / shell theo mặc định.
Warwick

Tại sao tôi có /bin/true/bin/falsetrong danh sách này?
Bernhard

2
@bernhard - Có một lời giải thích tốt / bin / true và / bin / false đây liên kết
Warwick

6

Bạn cũng có thể sử dụng chsh -l Điều này sẽ in danh sách các vỏ.

Thí dụ :-

[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin

3
Đối với tôi,chsh: invalid option -- 'l'
Pandya

@Pandya bạn có thể cung cấp lệnh hoàn chỉnh mà bạn đang sử dụng. Bạn có thể đang sử dụng nó với sự kết hợp của các phương thức hoặc cấu trúc shell khác như ((...)) hoặc [...] hoặc [[...]]
Anurag Anand



@Pandya man7.org/linux/man-pages/man1/chsh.1.html Điều này cung cấp tùy chọn -l. Chỉ cần nhấp vào liên kết trên đầu trang, để truy cập trang người dùng linux
Anurag Anand

2

Trên ít nhất OpenBSD và NetBSD:

$ getent shells

Trên (Ubuntu) Linux và nhiều Thông báo khác (bao gồm cả BSD):

$ grep '^[^#]' /etc/shells

Trên Solaris, tập tin /etc/shellscó thể không tồn tại. Danh sách các vỏ hợp lệ được chứa trong shells(4)hướng dẫn. Trên hệ thống vanilla Solaris 11.3 của tôi, danh sách các vỏ sau:

/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

Điều đáng chú ý là trên bản cài đặt của tôi, /usr/sfw/bin/zshcũng không /usr/xp4/bin/pfshtồn tại ...

Một danh sách ngắn hơn các vỏ Solaris hợp lệ (các bản sao của mỗi vỏ được loại bỏ):

/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.