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

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

표시 방법모든명령줄 셸이 설치되었습니다(예 bash:zsh등.), 중복도 없고 다른 것도 없습니다(즉, 쉘이 아닌 프로그램은 없습니다)? 이 코드는 나에게 거의 효과적입니다.루분투시스템( , 및 )이 있지만 dash인쇄 를 수행 ksh할 수 없습니다 .zshcshyashwhiptailyash

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. 간단한

고양이/등/쉘
승인된 쉘 목록이 제공됩니다.

그러나 이는 전체 목록이 아닙니다.설치됨껍데기. 많은 타사 셸(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 '/^shells\// {$1="";print $0;}'

shells/Fish, rc, v7sh, heirloom-sh 등이 설치된 경우 이를 포착하지만, bash-completion과 같이 계층 구조에 있지만 그 자체로는 쉘이 아닌 패키지에 대해 일부 오탐지를 생성합니다.

추가 읽기

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

OpenBSD에서

OpenBSD는 FreeBSD, TrueOS 등과 같습니다. 몇 가지 차이점이 있습니다. 한 명은 아직도 달리고 있어요

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

그러나 OpenBSD에는 이전 패키지 관리자와 운영 체제 자체와 함께 제공되는 다른 쉘 세트가 있습니다.

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

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

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

sqlports 패키지가 설치된 경우 sqlite3SQL을 사용하여 /usr/local/share/sqlports데이터베이스를 쿼리하여 설치된 셸 패키지를 찾을 수도 있습니다.

추가 읽기

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

데비안, 우분투 등에서

마찬가지로 승인된 쉘 목록은 다음을 통해 얻을 수 있습니다.

고양이/등/쉘
다시 말하지만 이는 설치된 쉘 목록과 다릅니다.

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

마찬가지로 모든 쉘 패키지에는 쉽게 태그가 지정됩니다. APT(Advanced Packaging Tool)는 BSD 포트/패키지 세계와 같은 계층 구조가 아닌 "섹션" 개념을 가지며 셸 패키지는 섹션에 있습니다 Shells.

패키지 관리자의 데이터베이스를 쿼리하기 위한 다양한 도구가 있습니다. 저는 aptitude여기를 선택합니다. 달리기

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

이는 aptitude에 대한 "간략형" 검색 구문입니다. "실제" 검색 구문은 '?installed ?section(shells)'더 많은 입력이 필요한 구문입니다. 추가적으로 명령줄 옵션을 사용하여 aptitude각 패키지에 대한 추가 정보를 인쇄할 수 있습니다. -F고려하다

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

추가 읽기

답변2

이 파일을 사용할 수 있습니다 /etc/shells. 여기에는 유효한 로그인 셸 목록이 포함되어야 합니다.

관련 정보