حفظ همه تاریخچه های bash
امین | چهارشنبه ۴ آذر ۱۳۹۴
حتما شده که توی یک پنجره ترمینال چند تا تب مختلف باز کردید. و توی هر کدوم یه کاری رو داشتید انجام میدادید. در تنظیمات فعلی bash فقط هیستوری دستورات آخرین تبی که باز بوده حفظ میشه. با یه کار ساده میشه به bash گفت که همه ی دستورات در همه ی تب ها رو وارد هیستوری بکنه.
این فایل رو با ویرایشگر متن دلخواهتون باز کنید و خط زیر رو به انتهاش اضافه کنید.و بعد یک بار ترمینال رو ببندید و دوباره باز کنید.
این فایل رو با ویرایشگر متن دلخواهتون باز کنید و خط زیر رو به انتهاش اضافه کنید.و بعد یک بار ترمینال رو ببندید و دوباره باز کنید.
nano ~/.bashrc |
این خط:
export PROMPT_COMMAND='history -a' |
echo 'shopt -s histappend' >> ~/.bashrc
دو تا نکته در مورد روشی که شما گفتین هست:
۱. مقدار قبلی PROMPT_COMMAND با این کار از بین میره (البته اگر مقدار داشته باشه).
۲. بعد از اجرای هر دستور فایل history به روز میشه، برخلاف حالت پیشفرض که این کار رو انتهای session (وقتی تب یا پنجره ترمینال بسته میشه) انجام میده.
اینکه فایل history رو کِی به روز شه هم جای بحث داره.
اگر بعد از اجرای هر دستور این کار انجام شه، بدیش اینه که با هر دستور یک بار نوشتن در فایل انجام میشه، و اینکه کامندهای sessionهای مختلف لابهلای هم در history نوشته میشن. یعنی بعدا که سابقه دستورات رو ببینین دستورات یه session پشت هم نیستن، که به نظرم خوب نیست.
ولی خوبیش اینه که اگه session به هر دلیلی درست بسته نشه (kill بشه) دستورات تا اون لحظه ثبت شدن. مثلا این مشکل برای sessionهای remote خیلی پیش میاد، قبل اینکه خودمون session رو ببندیم کانکشن قطع میشه، بعدا که دوباره remote میزنیم دستورات session قبلی رو تو history نمیبینیم.