jobs
はいつ行われますか コマンドはメッセージjobs:not found
を発行します ?
また、コマンド man jobs
はなぜですか? コマンドjobs
のエントリを表示することを拒否します ?
P.S. : jobs
を正常に実行できます 端末のコマンド
承認された回答:
ジョブコード> は実際のコマンドではありませんが、使用しているシェルに組み込まれているコマンドです:
[email protected]:~$ type jobs
jobs is a shell builtin
シェルなしで実行しようとすると、 jobs
というバイナリ実行可能ファイルがないため、エラーメッセージが表示されます。 。
また、組み込みであるため、マンページもありません。 man builtins
を見てください マルコが言ったように、 man bash
または、 bash
を使用していない場合は、使用しているそれぞれのシェルのマンページにあります 。
編集:シェルなしでプログラムを実行することの意味を説明する:Linuxのプロセスが別のプロセス(forkとexec)を起動したい場合、このプロセスをシェルでラップするか、シェルなしで直接起動することができます。たとえば、 perl
システム
を使用できます 新しいプロセスを起動する関数。これは、 echo
のような実際のプログラムファイルで正常に機能します (警告
をロードしました ここにもモジュールがあるので、エラーメッセージが表示されます):
[email protected] ~ % ll /bin/echo
-rwxr-xr-x 1 root root 31K Jan 17 2013 /bin/echo*
[email protected] ~ % perl -Mwarnings -e 'system "echo", "test"'
test
ただし、これは jobs
のような組み込みのシェルでは機能しません 、バイナリファイル jobs
がないため :
[email protected] ~ % perl -Mwarnings -e 'system "jobs"'
Can't exec "jobs": No such file or directory at -e line 1.
もちろん、すでにインタラクティブシェル内で作業している場合は、おそらくこの問題に遭遇することはありません。ただし、これは他のいくつかの状況、たとえばGnome Altを使用している場合に関係します。 + F2 ダイアログを実行します。コマンドをシェルでラップしないため、 jobs
を実行しようとしている間、実際のバイナリは正常に機能します エラーメッセージが表示されるだけです。
元のエラーメッセージからjobs:not found
シェルのjobs
の中にいるので、あなたはどういうわけかシェルの中にいないと思っていました もちろん正常に動作するはずです。