

# やりたいこと

ashが動いている環境で、入力されたコマンドや文字列をログとして記録したいです。  
文字列とは、コマンドではなく、コマンド名を間違えた場合のことを指します。

# 現在実施した方法

## 環境変数PS1を用いた方法。

[code]

    export PS1='$(Return_val=$?; echo "$Return_val" > /root/logs)\u@\h:\w\$ '
    
[/code]

これは、すべての記録をとることができますが、外部からシェルスクリプトを動かした場合などは記録できないので、使えません。

## execveシステムコールをフックする方法。

これはまだできていませんが、現実的には可能です。  
ただ、他のアプローチが欲しいです。

# 知りたい方法。

シェルにashが使われています。  
コマンドラインの入力受付として、何か関数が使われているはずなので、その関数をうまく使ってログとして記録したいです。

# 補足

記録するコマンドを限定したいのと、C言語で記述してバックエンドで動かしたいです。  
openwrt上なので、できるだけシステムに負荷をかけたくないです。

[自作シェルでヒストリを扱えるようにする](https://tyfkda.github.io/blog/2019/07/24/history-in-
shell.html)  
[boot関数](https://www.hazymoon.jp/OpenBSD/stand/boot/boot.html)


CC BY-SA 4.0
2023-08-16T15:37:55.140
95955
2023-08-17T05:41:14.297
2023-08-17T05:41:14.297
58699
58699
question
linux bash shell
ashでコマンドの実行履歴を取得したい。


環境にもよりますが、ash側にヒストリー機能はありませんか?  
自分はasustor NASでashを使ってますが、HISTSIZEなどを設定すれば普通にシェルのヒストリーが使えました


CC BY-SA 4.0
2023-08-16T18:27:46.247
95956
2023-08-16T18:36:55.587
2023-08-16T18:36:55.587
3060
44341
95955
answer