আমি যখনই কোনও টার্মিনালের কোনও নতুন উদাহরণ খুলি, ইতিহাস খালি থাকে। কেন এমন? আমার কি কিছু সেট আপ করা দরকার? যদিও ব্যাশে এটির দরকার নেই।
আমি যখনই কোনও টার্মিনালের কোনও নতুন উদাহরণ খুলি, ইতিহাস খালি থাকে। কেন এমন? আমার কি কিছু সেট আপ করা দরকার? যদিও ব্যাশে এটির দরকার নেই।
উত্তর:
বাশ এবং জ্যাশের বিভিন্ন ডিফল্ট রয়েছে। Zsh ডিফল্টরূপে কোনও ফাইলে ইতিহাস সংরক্ষণ করে না।
আপনি যখন কোনও কনফিগারেশন ফাইল ছাড়াই zsh চালান, এটি একটি কনফিগারেশন ইন্টারফেস প্রদর্শন করে। এই কনফিগারেশন ইন্টারফেসে, নির্বাচন করুন
(1) Configure settings for history, i.e. command lines remembered
and saved by the shell. (Recommended.)
তারপরে প্রস্তাবিত সেটিংস পর্যালোচনা করুন এবং নির্বাচন করুন
# (0) Remember edits and return to main menu (does not save file yet)
(2) সমাপ্তি, (3) কী-বাইন্ডিং এবং (4) বিকল্পের জন্য অন্যান্য সাবমেনাসের পুনরাবৃত্তি করুন, তারপরে নির্বাচন করুন
(0) Exit, saving the new settings. They will take effect immediately.
প্রধান মেনু থেকে।
প্রস্তাবিত ইতিহাস সম্পর্কিত সেটিংস হ'ল
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
setopt appendhistory
আমি হিস্ট্রি ফাইলের জন্য আলাদা নাম ব্যবহার করব, এটি zsh এর ইতিহাস ফাইলটি নির্দেশ করতে। এবং একটি আধুনিক সিস্টেমে 1000 লাইন বাড়ানো যেতে পারে।
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory
এই লাইনগুলি ~/.zshrc
উপায় দ্বারা যায়।
যদিও বিদ্যমান উত্তরটি সঠিক, আমি ভেবেছিলাম এটি যুক্তিযুক্ত হওয়া উচিত যে appendhistory
আপনার ইতিহাস সংরক্ষণের চেয়ে সম্ভবত আরও ভাল বিকল্প আছে এবং এটি SHARE_HISTORY
।
দস্তাবেজ থেকে SHARE_HISTORY
"উভয়ই হিস্ট্রি ফাইল থেকে নতুন কমান্ড আমদানি করে এবং আপনার টাইপ করা কমান্ডগুলিকে ইতিহাসের ফাইলে সংযুক্ত করে তোলে"। এর অর্থ হ'ল শেলগুলি একে অপরের ইতিহাস সম্পর্কে অবগত তবে বর্তমানের কোনওটি বন্ধ না করে বা একটি নতুন খুলতে না পারা।
সুতরাং, সবাই মিলে আপনি এটি এটিকে সেট করেছেন:
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=1000
setopt SHARE_HISTORY
INC_APPEND_HISTORY_TIME
, যা উপরের মতো সমস্ত টার্মিনাল থেকে ইতিহাস লিখেছে, তবে সেই ইতিহাস "একই ইতিহাস ফাইলটি ব্যবহার করা শেলের অন্যান্য উদাহরণ থেকে তাত্ক্ষণিকভাবে উপলব্ধ হবে না"। এটি আমার কাছে আরও অর্থবোধ করে, কারণ তখন আমি প্রতিটি টার্মিনালের ইতিহাসকে স্বতন্ত্রভাবে অতিক্রম করতে পারি, তবে এটি এখনও সমস্ত লগড।
INC_APPEND_HISTORY_TIME
আরও যুক্তিযুক্ত ধারণা তৈরি করতে পারে। আমার সম্ভবত "আরও ভাল" বলা উচিত ছিল না, আমি অনুমান করি এটি এই মুহুর্তে ব্যক্তিগত পছন্দের বিষয় মাত্র!
আপনি যখন প্রথমে বাশ থেকে zsh এ স্যুইচ করেন, আপনার ব্যাশের ইতিহাস আর বহন করবে না। সুতরাং আপনার বাশে থাকা সমস্ত ইতিহাস এখনও বাশের ইতিহাস ফাইলে রয়েছে। zsh ইতিহাসটিকে যখন আপনার শেল হিসাবে ব্যবহার শুরু করেন তখন থেকেই ক্যাপচার শুরু করে।
আপনি যদি ইতিহাসটি ক্যাপচারের জন্য সেট আপ না করে থাকেন তবে আপনি কনফিগার উইজার্ডটি আবার চালাতে পারেন এবং zsh কে বলতে পারবেন কত ইতিহাস সংরক্ষণ করতে হবে। হয় উইজার্ডে নতুন শট পেতে ~ / .zshrc এর নাম পরিবর্তন করুন বা মুছুন।
যদি এটি কাজ না করে এবং আপনার এই সমস্ত কিছু ইতিমধ্যে রয়েছে, চেষ্টা করুন:
fc -W
যা ইতিহাসের ফাইলে বর্তমান ইতিহাস লেখায়। এবং যদি আপনি পান:
zsh: locking failed for /home/username/.zsh_history: permission denied
তারপরে এটি ফাইল এবং অভিভাবক ডিরেক্টরিতে অনুমতি পরীক্ষা করার সময় ।
zsh
, তবে ডিফল্টরূপে প্রস্থানbash
করার পরে তার ইতিহাস ফাইলগুলিতে লেখেন , যার অর্থ আপনি যদি আগে এটি ব্যবহার না করে এবং কয়েকটি শাঁস না খোলেন, সেগুলি কমপক্ষে একটি লগ আউট না হওয়া অবধি ইতিহাসের প্রদর্শন করবে, যার ফলে এটির ইতিহাস ফাইলটি লেখা থাকবে।