Bagaimana cara menemukan daftar shell yang tersedia berdasarkan command-line?

20

Bagaimana cara membuat daftar shell yang tersedia untuk digunakan oleh command-line?

Pandya
sumber
(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)pada sistem Debian tampaknya memberikan perkiraan yang baik.
Stéphane Chazelas
Pada Fedora 20 ia mengembalikan /bin/bash /bin/crash /bin/gdb(dan symlink dari /usr/bin).
Cristian Ciupitu

Jawaban:

30

Untuk mendaftar shell login yang valid yang tersedia untuk digunakan pada waktu, ketik perintah berikut:

cat /etc/shells

Contoh:

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

Untuk informasi tentang shell, kunjungi wikipedia .

Pandya
sumber
Perhatikan bahwa ini tidak akan bekerja untuk semua sistem. Misalnya Solaris dan HP-UX tidak memiliki file / etc / shells secara default.
Warwick
Mengapa saya memiliki /bin/truedan /bin/falsedalam daftar ini?
Bernhard
2
@bernhard - Ada penjelasan yang bagus tentang tautan
Warwick
6

Anda juga dapat menggunakan chsh -l ini untuk mencetak daftar kerang.

Contoh: -

[anurag@focused ~]$ chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
Anurag Anand
sumber
3
Bagi saya,chsh: invalid option -- 'l'
Pandya
@ Pandya dapatkah Anda memberikan perintah lengkap yang Anda gunakan. Anda mungkin menggunakannya dengan kombinasi metode shell lain atau konstruksi seperti ((...)) atau [...] atau [[...]]
Anurag Anand
@Pandya man7.org/linux/man-pages/man1/chsh.1.html Ini menyediakan opsi -l. Cukup klik pada tautan di bagian atas halaman, untuk pergi ke halaman man linux-util
Anurag Anand
2

Paling tidak pada OpenBSD dan NetBSD:

$ getent shells

Di (Ubuntu) Linux dan banyak Unix lainnya (termasuk BSD):

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

Pada Solaris, file /etc/shellsmungkin tidak ada. Daftar kerang yang valid terkandung dalam shells(4)manual. Pada sistem vanilla Solaris 11.3 saya, ini mencantumkan shell berikut:

/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

Perlu dicatat bahwa pada instalasi saya, tidak ada /usr/sfw/bin/zshatau tidak /usr/xp4/bin/pfshada ...

Daftar pendek kulit Solaris yang valid (duplikat dari masing-masing kulit yang dihilangkan):

/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
Kusalananda
sumber