.Bash_profile এবং .Bashrc এর মধ্যে পার্থক্য কী?


238

ওএস এক্স-এ টার্মিনালের জন্য একটি উপনাম তৈরি করতে, আপনি হয় হয় এলিয়াসগুলিতে রাখতে পারেন .bash_profileবা .bashrc। দুজনের মধ্যে পার্থক্য কী এবং কেন আমি একটিতে এবং অন্যটির মধ্যে এলিয়াস রাখতে পছন্দ করব?


5
এখানে ইউনিক্স জ্ঞানকে নিরুৎসাহিত করার জন্য নয়, তবে বাশ একটি খাঁটি ইউনিক্স জন্তু তাই আপনি আরও ভাল জ্ঞান অর্জন করতে পারেন বা অংশীদার সাইটে এই প্রশ্নের বেশ কয়েকবার উত্তর দিতে পারেন। সেখানে 200 ভাল উপর bashrc প্রশ্ন / উত্তর পেয়ারে ধরে আছে UNIX
bmike

প্রোফাইলে পাশাপাশি রয়েছে ... স্ট্যাক ওভারফ্লোতে এই প্রশ্নটি দেখুন ।
ইয়াকভ বারুচ

2
যদি আপনি brew install bashএবং iTerm2 ব্যবহার করেন তবে আপনি সেট profile -> commandকরতে পারেন /usr/local/bin/bashযা .bashrcপরে ডিফল্টরূপে লোড হবে .bash_profile। এটি আপনাকে বাশকে 4 টি উপহার দেয় ...
রায় ফস

শুনেছি .bashrc কয়েক বছর ধরে ব্যবহার করা হয়নি, এবং ডিফল্টরূপে এটি কাজ করে না, এবং .bash_profile ম্যাকোক্সের জিনিস। এবং আমি চেষ্টা করেছি
.বাশার্ক

উত্তর:


237

.bash_profileলগইন শেলগুলির জন্য কার্যকর করা হয়, যখন .bashrcইন্টারেক্টিভ নন-লগইন শেলগুলির জন্য কার্যকর করা হয়।

আপনি যখন কনসোলের মাধ্যমে লগইন (ব্যবহারকারীর নাম এবং পাসওয়ার্ড লিখুন) হয় মেশিনে বসে, অথবা দূরবর্তীভাবে ssh এর মাধ্যমে: .bash_profileপ্রাথমিক কমান্ড প্রম্পটের আগে আপনার শেলটি কনফিগার করতে কার্যকর করা হয়।

তবে, আপনি যদি ইতিমধ্যে আপনার মেশিনে লগইন করে থাকেন এবং একটি নতুন টার্মিনাল উইন্ডো (xterm) খোলেন .bashrcতবে উইন্ডো কমান্ড প্রম্পটের আগে সম্পাদন করা হবে। .bashrcআপনি যখন /bin/bashটার্মিনালে টাইপ করে একটি নতুন ব্যাশ ইনস্ট্যান্স শুরু করেন তখন রানও হয় ।

ওএস এক্স-এ, টার্মিনালটি ডিফল্টরূপে প্রতিবার লগইন শেল চালায়, তাই এটি অন্যান্য বেশিরভাগ সিস্টেমে কিছুটা আলাদা তবে আপনি এটি পছন্দগুলিতে কনফিগার করতে পারেন।


56
On OS X, Terminal by default runs a login shell every time- আমি এটা বুঝতে না পেরে সর্বদা এত বিভ্রান্ত হয়ে পড়েছি। দুর্দান্ত তথ্য!
ভাউন

1
@ অ্যালেক্স, কেন ওএস এক্স টার্মিনাল প্রতিবার লগইন শেল চালাবে?
পেসিয়ার 13

15
'কেননা কিছু অ্যাপল দেব পার্থক্যটি প্রাথমিকভাবে বুঝতে পারেনি এবং এখন এটি কিছুটা জাম্বুতে আবদ্ধ।
স্নো ক্র্যাশ

2
আমি ওএস এক্সে আছি এবং আমি ব্যাশের পরিবর্তে জেসেল এবং টার্মিনালের পরিবর্তে আইটার্ম ব্যবহার করি। আমি উত্তরটির সাথে আলোচনার চেয়ে আলাদা টার্মিনাল এবং একটি পৃথক শেল ব্যবহার করছি তা সত্ত্বেও, ওএস এক্স এখনও লগইন শেলকে সবকিছু বিবেচনা করছে বলে মনে হচ্ছে, কারণ .zprofileপ্রতিবার দৌড়ে আসে।
অ্যাডাম জেরনার

1
যারা লগইন / নন-লগইন এবং ইন্টারেক্টিভ / অ-ইন্টারেক্টিভ শেলগুলির সংমিশ্রণের বিশদ বিবরণ খুঁজছেন এবং যখন তারা এই কনফিগারেশন ফাইলগুলি চালান, তখন unix.stackexchange.com/a/46856/38715 দেখুন
কেভিনমিক 18

43

এক্স 11 আপনার .bashrc"নজরুল" টার্মিনালটি যখন দেখবে তখন আপনার দিকে নজর দেবে.bash_profile

তবে, আপনি যদি নিম্নলিখিতগুলিকে নিজের সাথে যুক্ত করেন তবে আপনি .bash_profileসমস্ত কিছু আপনার .bashrcফাইলে সরিয়ে নিতে পারেন যাতে সমস্ত কিছু দুটি পরিবর্তে এক জায়গায় স্থিতিশীল করা যায়:

if [ -f $HOME/.bashrc ]; then
        source $HOME/.bashrc
fi

অথবা আপনি ঠিক করতে পারে cd ~ ; ln -s .bashrc .bash_profile
lhf

4
এই 2 কনফিগারেশন ফাইলগুলির একটি পৃথক পৃথক ফাংশন রয়েছে। কিছু ক্ষেত্রে, সেশনের শুরুতে আরম্ভ করার জন্য জিনিসগুলি থাকা দরকার এবং কেবল সেখানে ( ~/.bash_profile)। প্রতিটি শেল স্তরে ( ~/.bashrc) ইনক্রিমেন্টালি সংজ্ঞায়িত করার জন্য জিনিসগুলি প্রায়শই প্রয়োজন । এই স্বাধীনতা দমন করার পরামর্শ দেওয়া ভাল ধারণা নয়।
দান

2
@ ড্যানিয়েল অজুয়েলোস: লুরচ এই অংশটি ছেড়ে দিয়েছে, তবে ~/.bash_profileপ্রতিটি নতুন উইন্ডো / ট্যাবটির জন্য ওএস এক্স টার্মিনাল উত্স রয়েছে , সুতরাং টার্মিনালের সাথে সম্পর্কিত হিসাবে এই দুটি আলাদা করার উপায় নেই।
মিপাদি

13
@ মিপাদি এখনও তাদের আলাদা করার মান রয়েছে। উদাহরণস্বরূপ, .bash_profileশিশু প্রক্রিয়াতে আর কখনও উত্সাহিত করা যায় না। নেস্টেড ব্যাশ উৎস প্রতিটি স্তরে .bashrc, তাই আপনি যদি ভালো কিছু করা export A=a:$Aমধ্যে .bashrc, আপনার $Aআর নেস্টেড ব্যাশ পেতে হবে। আমি সাধারণত প্রোফাইলে এনভায়রনমেন্ট ভেরিয়েবল এবং আর সি-এ এ্যালিয়াস রেখে যাই
ফ্রাঙ্কলিন ইউ

@ ফ্র্যাঙ্কলিনইউ অনেক লোকের পক্ষে এত বড় চুক্তি নাও হতে পারে তবে আমি পুরোপুরি একমত! লোককে স্মরণ করিয়ে দেওয়ার জন্য এটি একটি দুর্দান্ত প্রযুক্তিগত বিষয় এবং আরও বেশি উপায়ে পাওয়ার যোগ্য।
সাবফুযিয়ন

21

ম্যাকোসের জন্য, সমস্ত .bash_profileকিছু একত্রীকরণের জন্য কোডে প্রবেশের কোডটি .bashrcনিম্নলিখিত:

if [ -f ~/.bashrc ]; then
    source ~/.bashrc
fi

এটি ম্যাক টার্মিনাল ব্যবহারকারীর জন্য আরও নির্দিষ্ট।


3
সত্য হলেও, 2012 সালের থেকে লুরচের উত্তর থেকে এটি কীভাবে আলাদা ?
আরজন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.