ম্যাকের টার্মিনাল সেশনগুলির মধ্যে বাশ ইতিহাস সংরক্ষণ করা হয়নি


33

আমার বাশ ইতিহাস রহস্যজনকভাবে কাজ করা বন্ধ করে দিয়েছে এবং কীভাবে এটি ঠিক করবেন তা আমার কোনও ধারণা নেই। আমার .bashrc এর মত দেখাচ্ছে:

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

যাইহোক, যখন আমি echo $HISTFILEএটি চালায় প্রিন্ট আউট /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew

আমি .bash_history ফাইলের মালিক তাই আমি কীভাবে এই সমস্যাটি সমাধান করতে যাব তা আমি খুব বেশি নিশ্চিত নই।

ধন্যবাদ!


হাই নেলসন, সুপার ব্যবহারকারীকে স্বাগতম আপনার দ্বারা thoseোকানো s স্পেসগুলি দ্রুত চেক করুন?
বারটিবিব

হ্যাঁ তারা ছিল, আমি এগুলি সরিয়ে আবার রিপোর্ট করব report

@ বার্তিয়েব, আমি শূন্যস্থানগুলি সরিয়ে দিয়েছি এবং এখন IST HISTFILESIZE সঠিকভাবে প্রতিধ্বনিত হয়েছে। তবে ইতিহাস সংরক্ষণে থাকা থেকে যায় এবং IST এইচআইএসটি ফাইলটি সেই অদ্ভুত টেম্পোর ইতিহাসের ফাইলটি মুদ্রণ করে (যা আমি ঠিক সেই অধিবেশনটির জন্য স্টোরের ইতিহাস ধরে নিচ্ছি)।

আপনি কি $HISTFILEআগ্রহের বাইরে, পরিবর্তন করার চেষ্টা করছেন ? আমার .bashrcওএসএক্স নেই এবং echo $HISTFILEআমি যে জায়গাটি প্রত্যাশা করবো সে বিষয়ে রিপোর্ট করে- প্রশ্নে লাইনগুলি মন্তব্য করে কি কোনও প্রভাব আছে?
বারটিয়েব

1
সর্বদা পথনাম পরিবর্তনশীল প্রসারণও উদ্ধৃতি: HISTFILE="$HOME/.bash_history”। উদ্ধৃতিগুলি না থাকলে আপনার সংস্করণটি অবৈধ হবে যদি আপনার বাড়ির ডিরেক্টরিতে যাওয়ার পথটিতে ফাঁক (বা সম্ভবত অন্যান্য বিশেষ অক্ষর থাকে) থাকে।
ক্রিস পৃষ্ঠা

উত্তর:


26

টার্মিনাল প্রতিটি টার্মিনাল অধিবেশনকে একটি অনন্য শনাক্তকারী নিয়োগ করে এবং এটি TERM_SESSION_ID এনভায়রনমেন্ট ভেরিয়েবলের মাধ্যমে যোগাযোগ করে যাতে কোনও টার্মিনালে চলমান প্রোগ্রামগুলি অ্যাপ্লিকেশন-নির্দিষ্ট অবস্থায় সংরক্ষণ / পুনরুদ্ধার করতে পারে যখন পুনরায় চালু করার সাথে টার্মিনালটি পুনরায় চালু করার সাথে পুনরায় চালু করা যায়।

একটি নতুন ফোল্ডার (~ / .bash_sessions /) হিস্টফিল এবং .্যাসিওশন ফাইলগুলি সেশনের জন্য স্বতন্ত্র সংরক্ষণ করার জন্য ব্যবহৃত হয়।

শেল স্টার্টআপের সময় সেশন ফাইলটি কার্যকর করা হয়। পুরানো ফাইলগুলি পর্যায়ক্রমে মোছা হয়।

ডিফল্ট আচরণ প্রতিটি পুনরুদ্ধার টার্মিনাল সেশনের জন্য स्वतंत्रভাবে ব্যাশ কমান্ডের ইতিহাস সংরক্ষণ এবং পুনরুদ্ধারের ব্যবস্থা করে। এটি নতুন অধিবেশনগুলির জন্য বিশ্ব ইতিহাসে কমান্ডগুলি মার্জ করে।

আপনি এই আচরণটি অক্ষম করতে পারেন এবং সেট করে একক ইতিহাস ভাগ করতে পারেন

export SHELL_SESSION_HISTORY=0

যদি HISTTIMEFORMAT সংজ্ঞায়িত করা হয়, তবে প্রতি সেশনের ইতিহাস ডিফল্টরূপে অক্ষম করা হয় (আরও পড়ুন / বেসরকারী / ইত্যাদি / bashrc_Apple_Terminal এ)

নিম্নলিখিত ফাইল উপস্থিত থাকলে সংরক্ষণ / পুনরুদ্ধার প্রক্রিয়াটি অক্ষম করা আছে:

~/.bash_sessions_disable

এল ক্যাপিটান প্রকাশের পর থেকেই অ্যাপল ইতিমধ্যে কিছু আচরণ পরিবর্তন করেছে, তাই এ সম্পর্কে আরও পড়তে ভাল less /private/etc/bashrc_Apple_Terminal


3
তবে কেবল সংরক্ষণ / পুনরুদ্ধার প্রক্রিয়াটি অক্ষম করে শুরু করবেন না। শেল কমান্ডের ইতিহাস নিয়ে যদি আপনার সমস্যা হয়, তবে সমস্যাটি সমাধান করার চেষ্টা করুন। ~/.bash_sessions_disableফাইলটি একটি শেষ অবলম্বন ক্ষেত্রে কোনো সমস্যা বিশেষভাবে সমাধান করা যাবে না এর সেখানে যেমন বোঝানো হয়। এটি প্রতি সেশনের কমান্ড ইতিহাসের চেয়ে বেশি অক্ষম করে এবং আপনি প্রতি সেশনের কমান্ডের ইতিহাসটি অক্ষম করতে পারেন। /etc/bashrc_Apple_Terminalবিস্তারিত জানার জন্য মন্তব্য দেখুন ।
ক্রিস পৃষ্ঠা

1
@ ক্রিসপেজ আসলে অ্যাপল স্ক্রিপ্টের কিছু বিট পরিবর্তন করেছে। আপডেট উত্তর, ধন্যবাদ।
দিম্মদীপ

@diimਦੀਪ আমি এই লাইনটি কোথায় যুক্ত করব? export SHELL_SESSION_HISTORY=0
জিরোহেজ


@ ডিমিমদীপ ধন্যবাদ এখনই এটি কাজ করছে বলে মনে হচ্ছে। এটির কোনও ছদ্মবেশ রয়েছে?
জিরোহেজ

6

আমি এল ক্যাপিটান আপগ্রেডের পরেও অনুরূপ কিছু লক্ষ্য করেছি। .bash_sessions_disableআপনার বাড়ির ডিরেক্টরিতে কেবল ফাইল ফাইল যুক্ত করা নতুন ব্যাশ সেশনগুলিকে অক্ষম করে এবং এটি .bash_historyআবার ব্যবহারে ফিরে আসে।

এই রেডডিট থ্রেডে আরও তথ্য এবং আরও লিঙ্ক রয়েছে।


তবে কেবল সংরক্ষণ / পুনরুদ্ধার প্রক্রিয়াটি অক্ষম করে শুরু করবেন না। শেল কমান্ডের ইতিহাস নিয়ে যদি আপনার সমস্যা হয়, তবে সমস্যাটি সমাধান করার চেষ্টা করুন। ~/.bash_sessions_disableফাইলটি একটি শেষ অবলম্বন ক্ষেত্রে কোনো সমস্যা বিশেষভাবে সমাধান করা যাবে না এর সেখানে যেমন বোঝানো হয়। এটি প্রতি সেশনের কমান্ড ইতিহাসের চেয়ে বেশি অক্ষম করে এবং আপনি প্রতি সেশনের কমান্ডের ইতিহাসটি অক্ষম করতে পারেন। /etc/bashrc_Apple_Terminalবিস্তারিত জানার জন্য মন্তব্য দেখুন ।
ক্রিস পৃষ্ঠা

ধন্যবাদ ক্রিস - এর ফলে আমার ইতিহাসটি আর কী কী অক্ষম করে তা গত কয়েকমাস ধরে প্রত্যাশিত (পূর্ববর্তী ওএসএক্স সংস্করণ এবং লিনাক্সের সমান) হিসাবে কাজ করে চলেছে। কেন তারা এটিকে বদলেছে জানেন না?
র‌্যাব

@rabs আমি যোগ করার সুপারিশ করছি SHELL_SESSION_HISTORY=0উপরের ~/.bash_profile
তিজয়

5

আপনি আরভিএম সমস্যাটি সর্বশেষ আরভিএম সংস্করণে আপডেট করে বা এটি সম্পাদন করে সমাধান করতে পারেন:

  echo 'shell_session_update' > $HOME/.bash_logout

আরও তথ্যের জন্য https://github.com/rvm/rvm/issues/3540 দেখুন ।


1
আরভিএম সংশোধন না করে খুব ভাল।
mlo55

1
আমরা কি রুবি এনভিরনমেন্ট ম্যানেজার (আরভিএম) rvm.io সম্পর্কে কথা বলছি ? কখন এবং কেন এর সাথে জড়িত হওয়া উচিত?
মার্কহু

3

রেডডিট থ্রেডের এই উত্তরটি আমাকে বাঁচিয়েছিল:

এটি সম্ভবত আরভিএম ব্যাশ_অ্যাসেশনগুলি চালানোর জন্য প্রস্থান "হুক" রোধ করছে। আপনি যদি আপনার .বাশ_ প্রোফাইলে নিম্নলিখিত লাইনটি মন্তব্য করেন তবে এটি কার্যকর হবে।

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

এটি সত্যিই সাহায্য করেছে!
কার্স্টেন

1

যদি এটি ম্যাক হয় তবে আমি মনে করি এটি ডিফল্ট লগইন শেল bashএবং এটি .profileপরিবর্তে চলে .bashrc। সুতরাং, আপনি ভুল ফাইলটি সম্পাদনা করছেন।


আমি। প্রোফাইলটি সম্পাদনা করেছি তাই এটি আমার .বাশার্কের মতোই এবং ইতিহাস এখনও আসে না up

@ নেলসনলিয়ু $HISTFILEআপনি বিভিন্ন অংশে প্রতিধ্বনিত হলে কী হবে profile? হতে পারে আপনি অন্য একটি স্ক্রিপ্ট উত্স পরিবর্তনশীল পরিবর্তন? আমি উভয় চেক করা Terminalএবং iTerm, bash 3এবং 4 উভয় তাদের ডিফল্ট আছে $HOME/.bash_history
থিওডেন

প্রোফাইলের বিভিন্ন অংশে আমি কীভাবে IST HISTFILE প্রতিধ্বনি করব?

@ নেলসনলিউ, এটা কি স্পষ্ট নয়? আপনার উদ্দেশ্য কখন $HISTFILEপরিবর্তন হয় তা ট্র্যাক করা । সুতরাং, কেবল echo $HISTFILEআপনার কোডকে ঘিরে দুটি করে । আপনাকে যা করতে হবে তা হল কোডের টুকরোটি যেখানে কোনও কিছু না প্রকাশ না হওয়া পর্যন্ত $HISTFILEউভয় echo $HISTFILEলাইন একে অপরের লাইন এবং লাইনে সরিয়ে দিয়ে পরিবর্তন হয় । এখানেই শেষ.
থিওডেন

1
সুতরাং আপনি যেমন নির্দেশ করেছেন এবং তৈরি করেছেন তেমনই করেছি আমি echo $HISTFILEপ্রতিটি লাইনে সিদ্ধান্ত নিয়েছি , কেবল কোনও পার্থক্য আছে কিনা তা দেখার জন্য। তবে এটি নিখুঁতভাবে /Users/username/.bash_historyকয়েকবার ছড়িয়ে পড়েছিল। আমি তখন echo $HISTFILEশেলের মধ্যে দৌড়েছি , এবং এটি আউটপুট হয়েছে /Users/nelsonliu/.bash_sessions/CD275A29-1DF1-4ED8-B8CE-F706B11B812F.historynew

0

আমি হাই সিয়েরায় এই সমস্যাটি দেখছিলাম। একরকম, আমার নিজের .bash_history রুটের মালিকানাধীন হয়ে গেছে এবং এমনকি অন্য ব্যবহারকারীর জন্য পড়ার অনুমতিও নেই (যখন হোম ডিরেক্টরি ডিরেক্টরিতে লস-লালের সাথে দেখা হয়)

এই .বাশ_হিসটরি ফাইলটিতে কোনও পরিণতির কিছুই ছিল না, তাই আমি একটি সুডো আরএম .Bash_history করেছি তারপরে একটি নতুন স্পর্শ করার জন্য একটি স্পর্শ .Bash_history করেছি।

এখন সব ঠিক আছে


আমার জন্য, এটি ফাইলের অনুমতি ছিল না, এটি ছিল যে আমি এইচআইএসটি নিয়ন্ত্রণ ভেরিয়েবলগুলির কোনও সংজ্ঞা দিইনি। স্পষ্টতই তাদের এক বা একাধিক সংজ্ঞা দেওয়া উচিত। আমি এটি আমার ~/.bash_profileফাইলে যুক্ত করেছি:export HISTTIMEFORMAT='%F %T '
মার্কহু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.