วิธีค้นหารายการของเชลล์ที่มีอยู่โดย command-line?


20

จะแสดงรายการเชลล์ที่มีให้ใช้งานโดย command-line ได้อย่างไร?


(IFS=: && grep -rl tcsetpgrp $PATH | xargs grep -rl setrlimit)บนระบบเดเบียนดูเหมือนจะให้การประมาณที่ดี
Stéphane Chazelas

ใน Fedora 20 จะส่งคืน /bin/bash /bin/crash /bin/gdb(และ symlink จาก/usr/bin)
Cristian Ciupitu

คำตอบ:


30

ในการแสดงรายการเชลล์ล็อกอินที่ใช้ได้สำหรับการใช้งานในเวลาพิมพ์คำสั่งต่อไปนี้:

cat /etc/shells

ตัวอย่าง:

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

สำหรับข้อมูลเกี่ยวกับการเยี่ยมชมเชลล์วิกิพีเดีย


โปรดทราบว่าสิ่งนี้จะไม่สามารถใช้ได้กับทุกระบบ เช่น Solaris และ HP-UX ไม่มีไฟล์ / etc / shells เป็นค่าเริ่มต้น
Warwick

ทำไมฉันถึงมี/bin/trueและ/bin/falseอยู่ในรายการนี้?
แบร์นฮาร์ด

2
@bernhard - มีคำอธิบายที่ดีของ / bin / จริงและ / bin / เท็จนี่คือการเชื่อมโยง
Warwick

6

นอกจากนี้คุณยังสามารถใช้ chsh -l สิ่งนี้จะพิมพ์รายการของเปลือกหอย

ตัวอย่าง: -

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

3
สำหรับฉันchsh: invalid option -- 'l'
แพนยา

@Pandya คุณสามารถให้คำสั่งที่สมบูรณ์ที่คุณใช้ คุณอาจจะใช้มันร่วมกับวิธีการอื่น ๆ ของเชลล์หรือโครงสร้างเช่น ((... )) หรือ [... ] หรือ [[... ]]
Anurag Anand


อาจเป็นไปได้ว่าman7.org/linux/man-pages/man1/chsh.1@@shadow-utils.html
Pandya

@Pandya man7.org/linux/man-pages/man1/chsh.1.html นี่เป็นตัวเลือก -l เพียงคลิกที่ลิงค์ด้านบนของหน้าเพื่อไปที่หน้า man linux-util
Anurag Anand

2

อย่างน้อย OpenBSD และ NetBSD:

$ getent shells

บน (Ubuntu) Linux และ Unices อื่น ๆ (รวมถึง BSD):

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

บน Solaris ไฟล์/etc/shellsอาจไม่มีอยู่ รายการเชลล์ที่ถูกต้องมีอยู่ในshells(4)คู่มือ บนระบบ vanilla 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 ที่ถูกต้อง (ซ้ำกันของแต่ละ 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.