FreeBSD, TrueOS/PC-BSD, DragonFly BSD 등에서.

FreeBSD, TrueOS/PC-BSD, DragonFly BSD 등에서.

표시 방법모든설치된 명령줄 셸(예: bash, zsh,등.), 중복도 없고 다른 것도 없습니다(즉, 쉘이 아닌 프로그램이 없습니다)? 이 코드는 거의 내에서 작동합니다.루분투시스템( , , dash및 포함 )이 인쇄되지만 인쇄 에 실패함 :kshzshcshyashwhiptailyash

apropos shell | grep sh | \
  sed 's/ .*//;s/.*/which &/e;/^\/bin\//!d;s/.*/realpath &/e;/^\/bin\//!d' | \
  sort -u | xargs whatis
bash (1)             - GNU Bourne-Again SHell
bsd-csh (1)          - a shell (command interpreter) with C-like syntax
dash (1)             - command interpreter (shell)
ksh93 (1)            - KornShell, a command and programming language
lksh (1)             - Legacy Korn shell built on mksh
mksh (1)             - MirBSD Korn shell
whiptail (1)         - display dialog boxes from shell scripts
zsh5 (1)             - the Z shell

답변1

FreeBSD, TrueOS/PC-BSD, DragonFly BSD 등에서.

목록승인됨쉘, 즉 관리자가 사용자에게 변경을 허용하는 쉘로그인 쉘명령 을 사용하려면 chsh기존 /etc/shells파일에 있습니다. 간단한

고양이 /etc/shells
승인된 포탄 목록을 제공합니다.

그러나 이는 목록에 포함되지 않습니다.설치됨껍질. 많은 타사 셸(Almquist 및 TENEX C 셸과 함께 제공되는 운영 체제 자체)은 /etc/shells패키지나 포트에서 설치할 때 자동으로 설치되지만 이는 보장되지 않으며 물론 관리자가 /etc/shells해당 셸이 있도록 변경했을 수 있습니다.설치됨하지만 그건 그렇지 않아승인됨.

목록설치됨하지만 껍질은 구하기 어렵지 않습니다. 앞서 언급했듯이 Almquist 및 TENEX C 쉘에는 각각 /bin/sh/bin/tcsh(일명 /bin/csh) 운영 체제가 함께 제공됩니다. 여기에 패키지에서 설치된 쉘 목록이 추가됩니다. FreeBSD 패키지 시스템에서 모든 쉘은 shells/패키지 계층 구조 영역 에 있으므로 pkg도구를 사용하여 설치된 패키지 데이터베이스를 쿼리하기만 하면 됩니다.

pkg 쿼리 "%o %n-%v %c" | awk '/^쉘\// {$1="";print $0;}'

shells/이것은 fish, rc, v7sh, heirloom-sh 등을 설치한 경우 잡아 내지만 계층 구조에 있지만 bash-completion과 같은 자체 쉘이 아닌 패키지에 대해 소수의 오탐지를 생성합니다. .

추가 읽기

  • 껍질/. FreeBSD 포트 트리. freebsd.org.
  • pkg-query. FreeBSD 매뉴얼. 2015. freebsd.org.

OpenBSD에서

OpenBSD는 FreeBSD, TrueOS et al과 같습니다. 약간의 차이점이 있습니다. 한 명은 아직도 달리고 있어요

고양이 /etc/shells
승인된 쉘 목록을 보려면 승인된 쉘과 설치된 쉘 사이에 여전히 차이가 있습니다.

OpenBSD에는 오래된 패키지 관리자와 운영 체제 자체에 포함된 다른 쉘 세트가 있습니다.

OpenBSD에서 운영 체제 자체에는 Korn 쉘(구체적으로 pdksh)과 C 쉘(TENEX C 쉘이 아님)이 각각 /bin/sh(일명 /bin/ksh) 및 /bin/csh(아님 /bin/tcsh)으로 제공됩니다.

다시 말하지만 해당 목록에 추가하는 타사 쉘은 shells/패키지 계층 구조 영역에 있으므로 설치된 쉘을 찾는 명령은 다음과 같습니다.

pkg_info -P -A | grep '^쉘/'

sqlite3sqlports 패키지가 설치되어 있는 경우 데이터베이스 에 대해 SQL 쿼리를 작성하여 /usr/local/share/sqlports설치된 쉘 패키지를 찾는 데 사용할 수도 있습니다 .

추가 읽기

  • 껍질/. OpenBSD 포트 트리. ports.su.
  • pkg_info. OpenBSD 매뉴얼. 2016. openbsd.org.

데비안, 우분투 등.

다시 한번, 승인된 쉘 목록은 다음을 통해 얻을 수 있습니다.

고양이 /etc/shells
그리고 이것은 설치된 쉘 목록과 동일하지 않습니다.

데비안과 우분투에서는모든쉘은 패키지 관리자에 의해 관리됩니다. "운영 체제와 함께 제공되는" 쉘은 없습니다.

다시 말하지만, 모든 쉘 패키지는 쉽게 표시됩니다. APT(고급 패키징 도구)에는 BSD 포트/패키지 세계의 계층 구조가 아닌 "섹션"이라는 개념이 있으며 쉘 패키지는 섹션에 있습니다 Shells.

패키지 관리자의 데이터베이스를 쿼리할 수 있는 도구는 여러 가지가 있습니다. 저는 aptitude여기를 선택합니다. 하나는 실행

적성검색 '~i~sshells'
~i섹션 ( ~s) 에서 설치된 ( ) 패키지를 검색합니다 shells.

이것은 aptitude의 "약칭" 검색 구문입니다. "진정한" 검색 구문은 '?installed ?section(shells)'입력하기가 다소 더 많은 것입니다. 또한 명령줄 옵션을 aptitude사용하여 각 패키지에 대한 자세한 정보를 인쇄 할 수 있습니다. -F고려하다

적성 검색 -F '%p %v %t %d' '~i~sshells'
예를 들어.

추가 읽기

답변2

파일 을 사용하시면 됩니다 /etc/shells. 여기에는 유효한 로그인 셸 목록이 포함되어야 합니다.

관련 정보