در Bash بهصورت پیشفرض تاریخ و زمان اجرای دستورات در خروجی history نمایش داده نمیشود. با تنظیم متغیر محیطی HISTTIMEFORMAT میتوان این قابلیت را فعال کرد.
اما یک نکته مهم و کمتر شناختهشده وجود دارد:
اگر timestamp قبلاً ذخیره نشده باشد، بعد از فعالسازی، تمام دستورات قدیمی با یک زمان یکسان (زمان فعالسازی) نمایش داده میشوند — نه زمان واقعی اجرای آنها.
در ادامه این رفتار را دقیق بررسی میکنیم.
فعالسازی Timestamp
برای فعالسازی نمایش تاریخ و زمان:
export HISTTIMEFORMAT='%F %T '
فرمتها:
%F→ تاریخ به صورتYYYY-MM-DD%T→ زمان به صورتHH:MM:S
مثال عملی (خروجی واقعی)
در سیستم زیر، ابتدا timestamp فعال نشده بود. سپس دستور زیر اجرا شد:
export HISTTIMEFORMAT='%F %T '
خروجی history بعد از فعالسازی:
1 2026-05-05 23:14:41 hostnamectl set-hostname dns.vahiddb.com
2 2026-05-05 23:14:41 systemctl stop firewalld
3 2026-05-05 23:14:41 systemctl disable firewalld
...
35 2026-05-05 23:14:41 vi /var/named/56.168.192.db
36 2026-05-05 23:14:48 export HISTTIMEFORMAT='%F %T '
37 2026-05-05 23:14:52 date
38 2026-05-05 23:14:55 timedatectl
39 2026-05-05 23:15:03 echo ""hello world"
40 2026-05-05 23:15:13 echo "hello world"
41 2026-05-05 23:15:15 history
نکته بسیار مهم (رفتار واقعی Bash)
همانطور که در خروجی مشاهده میکنید:
تمام دستورات قدیمی (شماره 1 تا 35)
همگی یک timestamp یکسان دارند:
2026-05-05 23:14:41
در حالی که این دستورات در زمانهای مختلف اجرا شده بودند.
چرا این اتفاق میافتد؟
چون:
- قبل از فعالسازی
HISTTIMEFORMAT، - Bash زمان اجرای دستورات را در فایل
~/.bash_historyذخیره نکرده بود.
بنابراین وقتی شما بعداً HISTTIMEFORMAT را فعال میکنید:
- Bash برای دستورات قبلی زمان واقعی ندارد.
- در نتیجه آنها را با زمان بارگذاری history (یا زمان فعالسازی) نمایش میدهد.
- این زمان واقعی نیست.
رفتار صحیح بعد از فعالسازی
از لحظهای که این متغیر تنظیم شود:
export HISTTIMEFORMAT='%F %T '
دستورات جدید با زمان دقیق ذخیره میشوند.
مثلاً:
37 2026-05-05 23:14:52 date
38 2026-05-05 23:14:55 timedatectl
39 2026-05-05 23:15:03 echo ""hello world"
این زمانها دقیق و واقعی هستند.
دائمی کردن تنظیم
برای اینکه این قابلیت همیشه فعال باشد:
echo "export HISTTIMEFORMAT='%F %T '" >> ~/.bashrc
و برای اعمال فوری:
source ~/.bashrc
از این به بعد هر دستور با timestamp واقعی ذخیره میشود.