হ্যাঁ, এটি প্রত্যাশিত আচরণ।
সংক্ষেপে, আচরণটি নিম্নরূপ:
- একটি ইন্টারেক্টিভ লগইন শেল হিসাবে বাশ শুরু হয়েছিল: পঠিত
~/.profile
- একটি ইন্টারেক্টিভ অ-লগইন শেল হিসাবে বাশ শুরু হয়েছিল: পঠিত
~/.bashrc
আরও তথ্যের জন্য স্টার্টআপ ফাইলগুলি সম্পর্কে ব্যাশ ম্যানুয়াল পড়ুন ।
ব্যক্তিগতভাবে, আমি মনে করি যে এই আচরণটি অদ্ভুত এবং আমি এখনও এই নকশার সিদ্ধান্তের জন্য যৌক্তিকতা খুঁজে পাইনি।
পরিভাষার কিছু ব্যাখ্যা:
- একটি ইন্টারেক্টিভ শেল হ'ল একটি শেল যা দিয়ে আপনি ইন্টারেক্ট করতে পারেন, তার অর্থ আপনি এতে কমান্ড টাইপ করতে পারেন। আপনি ব্যবহার করবেন বেশিরভাগ শেলগুলি ইন্টারেক্টিভ শেল।
- একটি অ-ইন্টারেক্টিভ শেলটি এমন একটি শেল যা দিয়ে আপনি ইন্টারঅ্যাক্ট করতে পারবেন না। অ-ইন্টারেক্টিভ শেলের ভিতরে শেল স্ক্রিপ্টগুলি চলে।
- একটি লগইন শেল হ'ল শেল যা আপনি আপনার সিস্টেমে লগইন করার সময় শুরু হয়।
- একটি লগ-ইন শেল একটি শেল যা লগইন প্রক্রিয়া পরে শুরু করা হয়।
আপনি দেখতে সর্বাধিক শাঁস হয় ইন্টারেক্টিভ অ লগইন শাঁস । এটি বিশেষত সত্য যদি আপনি জিনোমের মতো গ্রাফিক্যাল পরিবেশ চালাচ্ছেন, কারণ জিনোম হ'ল "লগইন শেল"। জিনোমের ভিতরে শুরু হওয়া কোনও বাশ সেশন হ'ল একটি লগইন শেল shell আপনি যদি সত্যিকারের ইন্টারেক্টিভ লগইন শেলটি দেখতে চান তবে ভার্চুয়াল কনসোলে যান (ব্যবহার করে Ctrl+Alt+F1) এবং তারপরে আপনার ব্যবহারকারীর নাম এবং পাসওয়ার্ড ব্যবহার করে লগ ইন করুন। এটি একটি বাস্তব ইন্টারেক্টিভ লগইন ব্যাশ শেল। আপনি গ্রাফিকাল শেল ব্যবহার করে ফিরে যেতে পারেন Ctrl+Alt+F7।
একটি বিকল্প রয়েছে --loginযা বাশকে এমন আচরণ করবে যেমন এটি লগইন করার পরেও শুরু হওয়া সত্ত্বেও লগইন শেল হিসাবে --login।
সাধারণত আপনি বাশ সবসময় ~/.bashrcএকটি ইন্টারেক্টিভ শেল পড়তে চান । এখানে আমি কীভাবে এটি করার পরামর্শ দিচ্ছি:
একটি ~/.bash_profileফাইল তৈরি করুন। যদি লগইন শেল হিসাবে বাশ শুরু করা হয় তবে এটি ~/.bash_profileআগে সন্ধানের আগে সন্ধান করবে ~/.profile। যদি বাশ সন্ধান করে ~/.bash_profileতবে এটি পড়বে না ~/.profile।
নিম্নলিখিত লাইনগুলি রাখুন ~/.bash_profile:
[ -f "$HOME/.profile" ] && source "$HOME/.profile"
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
এখন যদি ব্যাশটি ইন্টারেক্টিভ লগইন শেল হিসাবে শুরু হয় তবে এটি নীচের ফাইলগুলি পড়বে:
~/.bash_profile
~/.profile
~/.bashrc
এবং যদি ব্যাশটি ইন্টারেক্টিভ অ-লগইন শেল হিসাবে শুরু করা হয়:
~/.bashrc
আপনি স্টাফ যা ব্যাশ নির্দিষ্ট করা উচিত ~/.bashrcএবং স্টাফ যা ব্যাশ নির্দিষ্ট নয় ~/.profile। উদাহরণস্বরূপ ভিতরে PATHযায় ~/.profileএবং HISTCONTROLযায় ~/.bashrc।
নোট যে ~/.profileবাশ নির্দিষ্ট নয়। অন্যান্য পাঠ্য ভিত্তিক শেল (উদাহরণস্বরূপ sh বা ksh) এবং গ্রাফিকাল শেল (জিনোম) এছাড়াও পড়ে ~/.profile। এজন্য আপনার বাশ নির্দিষ্ট জিনিস .োকানো উচিত নয় ~/.profile।