FreeBSD、TrueOS/PC-BSD、DragonFly BSDなどから

FreeBSD、TrueOS/PC-BSD、DragonFly BSDなどから

表示方法すべてコマンドラインシェルがインストールされました(例bashzshなど。)、重複もなく他にもありません(つまり、シェル以外のプログラムはありません)?このコードは私にとってほとんど効果的です。ルブンツシステム(、および)がありますが、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。パッケージからインストールされたシェルのリストを追加します。 FreeBSDパッケージシステムでは、すべてのシェルはパッケージ階層領域にあるため、このツールを使用してインストールされているパッケージデータベースを照会するだけです。/bin/tcsh/bin/cshshells/pkg

pkg クエリ "%o %n-%v %c" awk '/^shells\// {$1="";print $0;}'

shells/Fish、rc、v7sh、heirloom-shなどがインストールされている場合はこれをキャッチしますが、bash-completionのように階層にありますが、それ自体はシェルではないパッケージに対していくつかの誤検出を生成します。

追加読書

  • シェル/FreeBSDポートツリー。 freebsd.org.
  • pkg-queryFreeBSDマニュアル。 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_infoOpenBSD マニュアル。 2016.openbsd.org.

Debian、Ubuntuなどから

同様に、承認されたシェルのリストは次のように取得できます。

猫/背中/シェル
繰り返しますが、これはインストールされているシェルのリストとは異なります。

DebianとUbuntuではすべてシェルはパッケージマネージャによって管理されます。 「オペレーティングシステムに付属の」シェルはありません。

同様に、すべてのシェルパッケージは簡単にタグ付けされます。 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'
例えば。

追加読書

  • シェル。 packages.debian.org.
  • ダニエル・バロウスとマヌエル・フェルナンデス・モンテチェロ(2016)。適性使用説明書。ダーバン。

おすすめ記事