質問: bashスクリプト内の履歴コマンド 履歴はシェルに組み込まれたコマンドであり、bashスクリプト内では使用できませんでした。それで、bashスクリプトを使用してこれを達成する方法はありますか? ここでは、私のスクリプトを紹介します。#!/bin/bash history | tail -100 > /tmp/history.log cd /tmp uuencode history.log history.txt | mail -s "history log of server" hello@hel.com
回答: bashはデフォルトで非インタラクティブシェルの履歴を無効にしますが、有効にすることができます。#!/bin/bash histfile=~/.bash_history set -o history history | tail ... ただし、そのサーバーのアクティビティを監視しようとしている場合、シェルの履歴は役に立ちません(履歴に表示されないコマンドを実行するのは簡単です)。 linuxですべてのプロセスの起動をログに記録するにはどうすればよいですか を参照してください。スクリプトをデバッグしている場合、シェルの履歴は有用な情報を取得するための最良の方法ではありません。はるかに優れたツールは、デバッグトレース機能です:put set -xスクリプトの上部近く。トレースは標準エラーに書き込まれます。