web-dev-qa-db-ja.com

コマンド「fg」、「bg」、「jobs」はどこにインストールされていますか?

fgbg、およびjobsは、ジョブ管理に使用されます。そして、何らかの理由(たぶん私だけかもしれません)で、それらのバイナリーやマンページの場所を見つけることができません(whereisは情報を出力しません)。 whichは出力しません。ただし、コマンド自体は問題なく機能します。

find /bin bgのようなコマンドを実行しましたが、ヒットはありませんでした。また、find / bgを実行して、ワイドネットをキャストしました。

16
Guildenstern

それらはシェル(bash)ビルトインであり、個別の実行可能ファイル(バイナリファイル、スクリプトなど)ではないため、これらのコマンドに対してファイルを取得していません。実際、ShellビルトインはShell実行可能ファイルにコンパイルされます。必要に応じて、ソースコードを確認して確認できます。 whichまたはwhereisは外部の実行可能ファイルのみを検索するため、組み込みの出力を取得していません。

コマンドが組み込みまたはエイリアスまたは関数または外部ファイルであるかどうかを確認するには、type組み込みを使用するのが最善の方法です。

$ type fg
fg is a Shell builtin

$ type bg
bg is a Shell builtin

$ type jobs
jobs is a Shell builtin

また、findコマンドは構文的に正しくないことに注意してください。正しい(最も簡単な)構文はfind /where/to/search -name 'name_to_search'です。

また、シェル組み込みコマンドと独立したスタンドアロン実行可能ファイルの両方として実装されるコマンドはほとんどありません。そのようなコマンドの場合、組み込みコマンドが外部コマンドよりも優先されることを常に忘れないでください。したがって、echo somethingを実行すると、組み込みのechoが実行されます。バイナリ実行可能ファイルechoを実行する場合は、別の方法で呼び出す必要があります。 1つの方法は、実行可能ファイルへの完全パス/bin/echo somethingを使用することです。

コマンドの使用可能なすべてのバージョンを表示するには、-aオプションを指定してtypeを実行します。

$ type -a echo
echo is a Shell builtin
echo is /bin/echo

Shellビルトインのドキュメントを取得するには、manbashpageを確認するか、helpコマンド(ビルトインコマンド)を使用します。

help jobs

また、@ terdonが指摘したように typeの代わりにwhichを使用する必要があります

33
heemayl

これらはシェルに組み込まれています-bashシェルプロンプトでhelp fgまたはhelp jobsと入力するか、bashのマンページから詳細情報を入力することにより、基本的な使用情報を取得できます。

6
steeldriver

Heemaylの答えに加えて、fgbg、およびjobs必要はシェルのメモリ内のデータ構造および/またはシェルのカーネル状態を操作するため、シェルに組み込まれていることを指摘する価値があります。処理する。 fgが行うことを行う外部コマンドを作成することはできません。

内蔵されなければならない他のコマンドがcdevalexecexitexporthistoryreadsetsource(別名.)、shifttrapulimitumask、及びwaitが挙げられます。シェルは、実装する拡張機能の量に応じて、より長いリストを持つ場合があります。 POSIXには「特別な組み込みユーティリティ」の異なるが重複するリストがあります -なぜbreakcontinueのようなものが制御構造のキーワードではなくコマンドとしてカウントされるのか、なぜPOSIXなのかわかりませんdoes n't他の方法で実装できない場合は、umask must-build-inなどを考慮してください。 ( umask(2) と呼ばれる/bin/umaskと呼ばれるプログラムを書くことができますが、シェルによって作成された後続のプロセスではなく、それ自体の設定を変更するだけなので、仕様を満たしません。 )

5
zwol

fgbg、およびjobsは個別のユーティリティではありませんが、bash(シェル組み込みコマンド)の一部です。

コマンドを使用してbashマニュアルでそれらの詳細を見つけることができます

man bash
2
Registered User

これは、シェルの組み込みコマンドです。これらはBash(または使用しているシェル)の一部であるため、バイナリはありません。

それらは、たとえば Bash manpage に文書化されています(「シェルビルトコマンド」セクションを参照)

2
Florian Diesch