各プロンプトの前に、現在のシェルでコマンドを実行します。

各プロンプトの前に、現在のシェルでコマンドを実行します。

jobs私の端末のタイトルに現在のステータスが表示されます。 Bashではこれを使用できますPROMPT_COMMAND。 Korn Shell(ksh93)にはこの機能はありません。

その他の回答内部的にコマンド置換を使用することをお勧めします$PS1。これは通常うまく機能しますが、コマンドでは機能しませんjobs。ここで問題はjobs職業についての人々の心配です。現在のシェルしかし、コマンドの置き換え(例PS1='...$(jobs)...':)サブシェルだから、仕事の機会はありません。

私が知っている唯一のメカニズムですが、trap '... jobs ...' DEBUGこれはあまりにも頻繁に行われます。現在、シェルのコンテキストでプロンプトごとに1回コマンドを実行する方法を知っていますか?それともKornシェルではこれは不可能ですか? !

ベストアンサー1

デフォルトで設定したばかりの場合は、設定時にPS1="...."引用符内の内容が評価されます。

ただし、中に含めると表示された'ときに評価されます。そしてそれは$(jobs)

例えば

$ PS1='
> $(jobs)
> $ '


$ sleep 1000 &
[1] 7541

[1] +  Running                 sleep 1000 &
$ sleep 1000 &
[2] 7543

[2] +  Running                 sleep 1000 &
[1] -  Running                 sleep 1000 &
$ kill %1
[1] - Terminated               sleep 1000 &

[2] +  Running                 sleep 1000 &
$ kill %2
[2] + Terminated               sleep 1000 &


$ 

(このテストはksh93を使用してDebian Jessieで行われましたが、すべてのksh93バリアントで動作する必要があります。テストするksh88はありません。)

おすすめ記事