1820641 メンバー
1955 オンライン
109626 解決策
新規ポスト

プロンプト

 
おおたはら
新しいメンバー

プロンプト

プロンプトに現在時刻を表示させる方法をご存知の方おられましたら教えてください。

$export PS1=`date`$

以上のようにPS1変数を設定したところ設定した時の時間がプロンプトになり動的に時刻変わりません。

環境は HP-UX B.11.11 です。
5件の返信5
mizuki
アドバイザー

プロンプト

シェルがbashであれば次のようにすれば表示可能です。

$ export PS1="\d \t > "

Tue Mar 30 20:49:28 >

Tue Mar 30 20:51:39 >

Tue Mar 30 20:51:43 >

Tue Mar 30 20:52:01 >

bashはTCOEであれば標準でインストールされていますし,ApplicationメディアにTechSysConfというバンドルが入っているので,これをインストールすればTCOE以外でもbashが使用できるようになるはずです。

おおたはら
新しいメンバー

プロンプト

ishさん

早速のレスありがとうございます。

残念ながらbashは入っていませんでした。

また、運用面から過去使用実績のないシェルを利用するのは不安があります。

ご存知でしたらsh(POSIX SHELL) kshでプロンプトに時刻表示させる方法をご教示いただけますようにお願いします。
isao
頻繁なアドバイザー

プロンプト

POSIX SHELLだと少し工夫が必要になります。

trapコマンドを併用して、コマンドの実行が終わるたびにPS1を再設定するようにします。通常は、シグナルをトラップするのに使いますが、DEBUGキーワードを使えば、コマンドの実行後に実行するように出来ます。

例えば、以下のようにします。

$ trap 'PS1=$(date +"%H:%M:%S $ ")' DEBUG

18:05:03 $ ls

18:05:04 $

のようになります。dateコマンドに指定するフォーマットを変更すればプロンプトの表示も変えられますので、manページを参照していろいろ変更してみてください。
isao
頻繁なアドバイザー

プロンプト

kshも同様にtrapとDEBUGキーワードを使って出来そうです。

おおたはら
新しいメンバー

プロンプト

isaoさんありがとうございました。無事できました。

ユーザーのシェルを確認したところsh,ksh以外にも

cshがありました。

cshではどう指定すればいいのでしょうか?

同じように指定しましたがtrapコマンドがcshにはないためできませんでした。

本当ならばcshの使用をやめたいのですが古い人たちは

cshマニアのためshやkshに変更を嫌がってます。

エリアス使用でもできそうですがあまりにも手間がかかるため変数で解決できればと思っています。

時刻をプロンプトに出す背景としてログイン時のコマンド入力を全てteratermのログにとることを

義務としていますが何時このコマンドを発行したのか特定するためです。

信頼性システムでは可能だとマニュアル等からわかりましたがあまりにも運用管理が煩雑になると思いできれば小手先の方法で解決したいと希望しています。