私は時々私が制御せずにPROMPT_COMMAND
どこかにホストにログインしますreadonly
。どのような方法がありますか?この問題を解決するには、次の手順を実行します。history
注文するそれでも、例えばPS1
?を使ってみました。すべてのプロンプトが印刷されますがPS1='$(history -a; history -c; history -r; echo finished)'
動作finished
しないようです。
- 同じホストで2つの端末AとBを開きます。
- 端末Aでコマンドを実行してください
a
。 - ターミナルBでコマンドを実行してください
b
。 - B端子を2回押します↑。
ホストがある場所にはPROMPT_COMMAND='history -a; history -c; history -r;'
端末Bが表示されますa
。PS1
それで始まるホストでは、$(history -a; history -c; history -r; echo finished)
両方の端末を開く前に実行されるコマンドが表示されます。明らかな理由はinコマンドはPS1
サブシェルで実行されます。
別のオプションは、グローバルRCファイルを完全にバイパスすることです。
bash --rcfile ~/.bashrc
ただし、標準値の使用をバイパスPROMPT_COMMAND
することは可能です。システム管理者が承認しない政策上の理由で。
答え1
シグナルハンドラ内で書き込みコマンドを実行できるため、サブシェルは不要です。その後、PS1
適切な信号を送信します。
trap 'history -a; history -c; history -r;' USR1
export PS1='$(kill -USR1 $$)'"$PS1"