バックグラウンドスクリプトで定期的にPS1を変更できますか?

バックグラウンドスクリプトで定期的にPS1を変更できますか?

私はPS1変数を見つけました。プロンプトを変更するには、この変数の値を変更するだけです。たとえば、次のようになります。

PS1="\h"
hostname as Prompt
PS1="\j"
numbers of current jobs as Prompt
PS1="\t"
current time as Prompt
PS!="\j running on \h :"
or more complex string with many substitutions

これで、シェルを占有していないバックグラウンドプロセスのようなものがあるので、PS1の値を5秒ごとに変更し、フルタイムでバックグラウンドで実行できるスクリプトを作成できるかどうか疑問に思います。

擬似スクリプト:

Repeat

    {
    PS1="\j jobs"
    sleep 5 seconds
    PS1="time: \t"
    sleep 5 seconds
    PS1="Command History: \!"
    sleep 5 seconds
    }

可能であれば、bashシェルスクリプトでどのように実装しますか?

答え1

上記の擬似コードをシェルスクリプトに統合しても、これは可能だとは思わない。これは、シェルスクリプトが呼び出されるたびに必要な場所ではなく、これらのことが発生する独自のサブシェルを起動するためです。 (メインシェル)に移動します。バックグラウンドで始めても同じです。 (スクリプト.sh&)

答え2

一般的なUNIXシェル(bash、[pd] ksh、[t] csh)には、自動化されたバックグラウンド操作を必要に応じて実行するための独自のcron内部アナログはありません。

しかし、それでもコマンドを実行してプロンプトに戻った後にプロンプ​​トを表示する文字出力は動的ではなく静的です。そこに座って視聴していると思うように5秒ごとにPS1オプションを循環しません。 Enter を押すか他のコマンドを実行するまで、新しいプロンプトは表示されません。

ただし、「タスクバー」機能を備えたGNU Screenを使用すると、必要なものを得ることができます。から始めましょうこれ

関連情報