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


450

মধ্যে পার্থক্য কি .bashrcএবং .bash_profileএবং যা আমি ব্যবহার করা উচিত?



যদি আপনি আরও একটি সম্পূর্ণ ব্যাখ্যা চান যা এর সাথে জড়িত থাকে .profileতবে এই প্রশ্নটি একবার দেখুন: superuser.com/Qestions/789448/…
ফ্লিম

উত্তর:


518

Ditionতিহ্যগতভাবে, আপনি যখন ইউনিক্স সিস্টেমে লগইন করেন, সিস্টেমটি আপনার জন্য একটি প্রোগ্রাম শুরু করে। এই প্রোগ্রামটি একটি শেল, অর্থাত্, অন্যান্য প্রোগ্রাম শুরু করার জন্য ডিজাইন করা একটি প্রোগ্রাম। এটি একটি কমান্ড লাইনের শেল: আপনি এর নাম টাইপ করে অন্য প্রোগ্রাম শুরু করেন। ডিফল্ট শেল, একটি বোর্ন শেল, ~/.profileলগইন শেল হিসাবে ডাকা হলে কমান্ডগুলি পড়ে reads

বাশ বোর্নের মতো শেল shell এটি ~/.bash_profileযখন লগইন শেল হিসাবে আহ্বান করা হয় তখন থেকে কমান্ডগুলি পড়ে এবং যদি সেই ফাইলটি বিদ্যমান না থাকে - তবে এটি ~/.profileপরিবর্তে পড়ার চেষ্টা করে।

আপনি যেকোন সময় সরাসরি শেলটি ডেকে আনতে পারেন, উদাহরণস্বরূপ জিইউআই পরিবেশের মধ্যে টার্মিনাল এমুলেটর চালু করে। শেলটি যদি লগইন শেল না হয় তবে এটি পড়বে না ~/.profile। আপনি যখন একটি ইন্টারেক্টিভ শেল হিসাবে বাশ শুরু করেন (অর্থাত্ স্ক্রিপ্টটি চালনা করবেন না), তখন এটি পড়বে ~/.bashrc(লগইন শেল হিসাবে আহ্বান করা ব্যতীত, তবে এটি কেবল পড়বে ~/.bash_profileবা ~/.profile

অতএব:

  • ~/.profile আপনার পুরো সেশনে প্রযোজ্য এমন স্টাফ রাখার জায়গাটি যেমন আপনি লগ ইন করার সময় আপনি যে প্রোগ্রামগুলি শুরু করতে চান (তবে গ্রাফিকাল প্রোগ্রাম নয়, তারা একটি আলাদা ফাইলে যায়) এবং পরিবেশের পরিবর্তনশীল সংজ্ঞা।

  • ~/.bashrcএমন স্টাফ রাখার জায়গা যা কেবলমাত্র ব্যাশ নিজেই প্রয়োগ করে যেমন যেমন ওরফে এবং ফাংশন সংজ্ঞা, শেল বিকল্প এবং প্রম্পট সেটিংস। (আপনি সেখানে কী বাঁধাই করতে পারেন, তবে ব্যাশের জন্য তারা সাধারণত প্রবেশ করতে পারে ~/.inputrc))

  • ~/.bash_profileপরিবর্তে ব্যবহার করা যেতে পারে ~/.profile, তবে এটি কেবল বাশ দ্বারা পড়া হয়, অন্য কোনও শেল দ্বারা নয়। (আপনি যদি আপনার ইনিশিয়েশন ফাইলগুলি একাধিক মেশিনে কাজ করতে চান এবং আপনার লগইন শেলটি তাদের সকলের পক্ষে বাশ না করে তবে এটি বেশিরভাগ ক্ষেত্রে উদ্বেগের বিষয়)) ~/.bashrcশেলটি ইন্টারেক্টিভ থাকলে এটি অন্তর্ভুক্ত করার জন্য এটি একটি যৌক্তিক জায়গা । আমি নিম্নলিখিত বিষয়বস্তুগুলিতে সুপারিশ করছি ~/.bash_profile:

    if [ -r ~/.profile ]; then . ~/.profile; fi
    case "$-" in *i*) if [ -r ~/.bashrc ]; then . ~/.bashrc; fi;; esac

আধুনিক ইউনিটগুলিতে, এর সাথে সম্পর্কিত একটি যুক্ত জটিলতা রয়েছে ~/.profile। আপনি যদি কোনও গ্রাফিক্যাল পরিবেশে লগ ইন করেন (এটি হ'ল প্রোগ্রামটি যেখানে আপনি আপনার পাসওয়ার্ড টাইপ করেন সেগুলি গ্রাফিক্স মোডে চলমান থাকে), আপনি স্বয়ংক্রিয়ভাবে লগইন শেলটি পাবেন না ~/.profile। গ্রাফিকাল লগইন প্রোগ্রামের উপর নির্ভর করে, উইন্ডো ম্যানেজার বা ডেস্কটপ পরিবেশে আপনি চালনা করেন এবং আপনার ডিস্ট্রিবিউশন কীভাবে এই প্রোগ্রামগুলিকে কনফিগার করেছে, আপনার ~/.profileপড়া বা নাও করা যেতে পারে। যদি তা না হয় তবে সাধারণত অন্য জায়গা থাকে যেখানে আপনি লগ ইন করার সময় আপনি পরিবেশের ভেরিয়েবল এবং প্রোগ্রামগুলি লঞ্চ করার জন্য সংজ্ঞা দিতে পারেন, তবে দুর্ভাগ্যক্রমে কোনও মানক অবস্থান নেই।

নোট করুন আপনি এখানে পরিবেশের পরিবর্তনশীল সংজ্ঞা স্থাপন করতে ~/.bashrcবা সর্বদা টার্মিনালগুলিতে লগইন শেলগুলি চালু করতে সুপারিশ দেখতে পারেন see দুটোই খারাপ ধারণা। এই ধারণাগুলির যে কোনওটির মধ্যে সবচেয়ে সাধারণ সমস্যাটি হ'ল আপনার পরিবেশ পরিবর্তনশীলগুলি কেবলমাত্র টার্মিনালের মাধ্যমে চালু হওয়া প্রোগ্রামগুলিতে সেট করা হবে, সরাসরি আইকন বা মেনু বা কীবোর্ড শর্টকাট দিয়ে শুরু হওয়া প্রোগ্রামগুলিতে নয়।

Request সম্পূর্ণতার জন্য, অনুরোধ অনুসারে: যদি .bash_profileউপস্থিত না থাকে তবে ব্যাশ .bash_loginফিরে যাওয়ার আগেও চেষ্টা করে .profile। ভুলে নির্দ্বিধায় এটি বিদ্যমান।


11
ভাল পোস্টের জন্য +1। "লগইন গ্রাফিকাল বনাম লগইন শেল" সম্পর্কে বিভাগ যুক্ত করার জন্যও আপনাকে ধন্যবাদ জানাই ... যেখানে আমার মনে হয়েছে যে সমস্যাটি ছিলাম। /। প্রোফাইলগুলি গ্রাফিকাল / শেলটির জন্য সর্বদা কার্যকর করা হবে ... তবে ব্যবহারকারী যখন লগ ইন করে তখন এটি কার্যকর হয় না গ্রাফিকাল লগইন মাধ্যমে। রহস্যটি সমাধান করার জন্য আপনাকে ধন্যবাদ।
ট্রেভর বয়ড স্মিথ

4
@ গিলস: আপনি প্রতিটি টার্মিনালে লগইন শেল চালানো কেন খারাপ ধারণা বলে উদাহরণ সহ আরও বিস্তারিতভাবে ব্যাখ্যা করতে পারেন? এটি কি কেবল ডেস্কটপ লিনাক্সের সমস্যা? (আমি সংগ্রহ করি যে ওএস এক্স টার্মিনালে প্রতিবার একটি লগইন শেল চালায় এবং আমি এর কোনও পার্শ্ব প্রতিক্রিয়া লক্ষ্য করি নি (যদিও আমি সাধারণত আইটর্ম ব্যবহার করি) But তবে তার বাইরে আমি যে পরিবেশের অনেকগুলি পরিবর্তনশীল সেগুলি সম্পর্কে ভাবতে পারি না can't একটি টার্মিনাল। (সম্ভবত HTTP_PROXY?))
আইকনোক্লাস্ট

2
@ ব্র্যান্ডন আপনি যদি প্রতিটি টার্মিনালে লগইন শেল চালান, এটি পরিবেশের দ্বারা প্রদত্ত পরিবেশের ভেরিয়েবলগুলিকে ওভাররাইড করবে। প্রতিদিনের পরিস্থিতিতে আপনি এ থেকে দূরে সরে যেতে পারেন, তবে তাড়াতাড়ি বা পরে এসে আপনাকে কামড় দেবে, যখন আপনি টার্মিনালে বিভিন্ন ভেরিয়েবল স্থাপন করতে চান (বলুন, কোনও প্রোগ্রামের একটি ভিন্ন সংস্করণ চেষ্টা করে দেখুন): লগইন শেল আপনার স্থানীয় সেটিংসকে ওভাররাইড করে।
গিলস

4
বিবৃতিটি ~/.bash_profileপরিবর্তে ব্যবহার করা যেতে পারে ~/.profile, তবে ~/.bashrcশেলটি ইন্টারেক্টিভ থাকলে আপনাকেও অন্তর্ভুক্ত করতে হবে। এগুলি অরথোগোনাল ইস্যু হিসাবে বিভ্রান্তিকর। আপনি যদি ব্যবহার করেন ~/.bash_profileবা ~/.profileআপনি ~/.bashrcসেখান থেকে সেটিংস ব্যবহার করতে চান তবে আপনি লগইন শেলটিতে প্রভাব ফেলতে চান তা বিবেচ্য নয়।
পাইওটর ডব্রোগোস্ট

3
@ গিলস শিওর, তবে উত্তরে বাক্যটি যেভাবে প্রণয়ন করা হয়েছে তা বোঝায় যে এর পরিবর্তে ~/.bashrcনির্বাচনের সাথে অন্তর্ভুক্ত করার প্রয়োজনের কিছু আছে যা সত্য নয়। যদি লগইন করার সময় কেউ যদি কোনও ধরণের স্ক্রিপ্টে অন্তর্ভুক্ত থাকে (তবে এটি হয় হয় না ) কারণ তিনি লগইন শেলটিতে সেটিংগুলি একইভাবে প্রয়োগ করতে চান যা তারা নন-লগইন শেলটিতে প্রয়োগ করা হয়। ~/.bash_profile~/.profile~/.bashrc~/.bash_profile~/.profile~/.bashrc
পাইওটর ডব্রোগোস্ট

53

এই ছোট্ট নিবন্ধ থেকে

ব্যাশ ম্যান পৃষ্ঠা অনুসারে .bash_profile লগইন শেলগুলির জন্য কার্যকর করা হয়, যখন .bashrc ইন্টারেক্টিভ নন-লগইন শেলগুলির জন্য কার্যকর করা হয়।

লগইন বা নন-লগইন শেল কী?

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

তবে, আপনি যদি ইতিমধ্যে আপনার মেশিনে লগইন করেছেন এবং জিনোম বা কেডিএর ভিতরে একটি নতুন টার্মিনাল উইন্ডো (এক্সটার্ম) খোলেন, তবে উইন্ডো কমান্ড প্রম্পটের আগে .brcrc কার্যকর করা হবে uted আপনি যখন টার্মিনালে / বিন / ব্যাশ টাইপ করে একটি নতুন ব্যাশ ইনস্ট্যান্স শুরু করেন .bashrc এছাড়াও চালিত হয়।


12
সামান্য আপডেট: 'মৃত্যুদন্ড কার্যকর করা' সম্ভবত কিছুটা বিভ্রান্তিকর শব্দ, এগুলি উভয়ই টকযুক্ত। সম্পাদিত শোনার মতো এটি স্ক্রিপ্ট হিসাবে চালিত হয়, কাঁটাচামচ / এক্সিকিউটিড ইয়াদদা ইয়াদদা। এটি বর্তমান শেলটির প্রসঙ্গে চালানো হয়েছে আরও গুরুত্বপূর্ণ, .bashrc প্রায়শই চালানো হয়। এটি প্রতিটি বাশ স্ক্রিপ্টে চালানো হয়, এবং আপনার কাছে .বাশ_ প্রোফাইল নেই। এছাড়াও, আপনি কীভাবে আপনার এক্সটার্মগুলি সেট আপ করেন তার উপর নির্ভর করে আপনি একটি শেল তৈরি করতে পারেন যা উত্স sources বাশ_প্রোফাইল
রিচ হোমোলকা

36

পুরানো দিনগুলিতে, যখন সিউডো টিটি সিউডো ছিল না এবং প্রকৃতপক্ষে, ভাল, টাইপ করা হয়েছিল, এবং ইউএনআইএক্সগুলি মোডেম দ্বারা অ্যাক্সেস করা হয়েছিল তাই আপনি ধীরে ধীরে প্রতিটি স্ক্রিনে আপনার প্রতিটি চিঠি মুদ্রিত দেখতে পেয়েছিলেন, দক্ষতা সর্বজনীন ছিল। দক্ষতা কিছুটা সহায়তা করার জন্য আপনার কাছে একটি মূল লগইন উইন্ডো এবং আপনি যে কোনও উইন্ডো প্রকৃতপক্ষে কাজ করতেন সে সম্পর্কে ধারণা ছিল। আপনার মূল উইন্ডোতে আপনি কোনও নতুন মেলের জন্য বিজ্ঞপ্তি চান, সম্ভবত ব্যাকগ্রাউন্ডে কিছু অন্যান্য প্রোগ্রাম চালান।

এটি সমর্থন করার জন্য, শেলগুলি .profileবিশেষত 'লগইন শেলস' এ একটি ফাইল সস করে। এটি বিশেষ করবে, একবার সেশন সেটআপ করার জন্য। বাশ প্রথমে .বাশ_ প্রোফাইলে দেখার জন্য এটি কিছুটা বাড়িয়েছে pr অন্যান্য শেলগুলি, লগইনবিহীন, কেবলমাত্র আরসি ফাইল, .bashrc (বা .kshrc, ইত্যাদি) উত্স করে।

এটি এখন কিছুটা অ্যানাক্রোনিজম। আপনি যেমন কোনও গুই উইন্ডো ম্যানেজারে লগইন করেন তেমন কোনও প্রধান শেলটিতে আপনি লগইন করেন না। অন্য উইন্ডোর চেয়ে আলাদা কোনও প্রধান উইন্ডো নেই।

আমার পরামর্শ - এই পার্থক্যটি সম্পর্কে চিন্তা করবেন না এটি ইউনিক্স ব্যবহারের পুরানো স্টাইলের উপর ভিত্তি করে। আপনার ফাইলগুলির মধ্যে পার্থক্য দূর করুন। .Bash_ প্রোফাইলে সম্পূর্ণ সামগ্রীটি হওয়া উচিত:

[ -f $HOME/.bashrc ] && . $HOME/.bashrc

এবং আপনি বাস্তবে .bashrc এ সেট করতে চান এমন সমস্ত কিছু রাখুন

মনে রাখবেন .bashrc সমস্ত শেল, ইন্টারেক্টিভ এবং অ-ইন্টারেক্টিভের জন্য উত্সযুক্ত। আপনি এই কোডটি .বাশিআরসি-র শীর্ষের নিকটে স্থাপন করে অ-ইন্টারেক্টিভ শেলগুলির জন্য সোর্সিং শর্ট সার্কিট করতে পারেন:

[[ $- != *i* ]] && return


6
এটি একটি খারাপ ধারণা, আমার উত্তর দেখুন । বিশেষত, আপনার পরিবেশের ভেরিয়েবলগুলি কেবলমাত্র একটি আইকন বা মেনু বা কীবোর্ড শর্টকাট দিয়ে সরাসরি শুরু করা প্রোগ্রামগুলিতে নয়, কেবলমাত্র টার্মিনালের মাধ্যমে চালু প্রোগ্রামগুলিতে সেট করা হবে।
গিলস

4
@ গিলস আপনি কেন দাবি করছেন তা আমি বুঝতে পারি না। সঙ্গে .$HOME/.bashrcযেমন রিচ উপরে দেখিয়েছেন, সেটিংস .bashrcলগইন শাঁস উপলব্ধ হবে, এবং এইভাবে ডেস্কটপ পরিবেশে হিসাবে ভাল। উদাহরণস্বরূপ, আমার ফেডোরা সিস্টেমে gnome-sessionযেমনটি শুরু হয় -$SHELL -c gnome-sessionতেমনই .profileপড়ে।
মাইকেল

2
@ পাইওটারডব্রোগোস্ট ওহ, হ্যাঁ, রিচের উত্তর নিয়ে আরও একটি সমস্যা আছে। সহ .bashrcমধ্যে .profileসাধারণত কাজ না, কারণ .profileদ্বারা সঞ্চালিত হতে পারে /bin/sh(ডিফল্ট অনুসারে একটি গ্রাফিকাল লগ ইনের জন্য যেমন উবুন্টু দিকে) এবং ব্যাশ, এবং যে শেল ইন্টারেক্টিভ (ক গ্রাফিকাল লগ-ইন জন্য যেমন) নাও হতে পারে।
গিলস

3
@ গিলিস পুনরায়: ".প্রফাইলে .bashrc সহ" যা সুপারিশ করা হয়েছিল তা মোটেই নয় (আসলে এর বিপরীতে, আসলে)। হয় উত্তরটি সম্পাদিত হয়েছিল (এটি তেমন প্রদর্শিত হয় না) অথবা আপনার মন্তব্যগুলি যা বলা হচ্ছে তার সাথে সামঞ্জস্য করে না।
মাইকেল 25

2
সাধারণভাবে, +1, তবে আমি "শর্ট সার্কিট ... অ-ইন্টারেক্টিভ শেলগুলির জন্য" (".bashrc এর শীর্ষের নিকটে: [[ $- != *i* ]] && return") সুপারিশ যুক্ত করব; আমি আমার .bashrcকিছুটিকে এমনকি অ-ইন্টারেক্টিভ শেলের জন্যও মৃত্যুদন্ড কার্যকর করা যেমন , ইস্যু করার সময় এনভির ভারসাম সেট করে ssh hostname {command}, যাতে রিমোট কমান্ডগুলি সঠিকভাবে কার্যকর করা যায় (যদিও শেলটি ইন্টারঅ্যাক্টিভ না হলেও)। তবে পরবর্তী সময়ে অন্যান্য সেটিংস .bashrcএড়ানো উচিত। আমি সাধারণত TERM = বোবা এবং / অথবা আনসেট পরীক্ষা করি এবং তারপরে তাড়াতাড়ি জামিন আউট।
মাইকেল 25

18

শ্রীভাতসার এর দুর্দান্ত ব্লগ পোস্টটি একবার দেখুন । এখানে একটি এক্সট্রাক্ট, তবে ব্লগ পোস্টে যান, এটিতে "লগইন শেল", একটি ফ্লো চার্ট এবং জেডএসের জন্য অনুরূপ টেবিলের মতো শর্তগুলির জন্য ব্যাখ্যা অন্তর্ভুক্ত রয়েছে।

বাশের জন্য, তারা নিম্নলিখিত হিসাবে কাজ করে। উপযুক্ত কলামটি পড়ুন। এ, তারপরে বি, তারপরে সি ইত্যাদি কার্যকর করে বি 1, বি 2, বি 3 এর অর্থ এটি খুঁজে পাওয়া ফাইলগুলির মধ্যে প্রথমটি কার্যকর করে।

+----------------+-----------+-----------+------+
|                |Interactive|Interactive|Script|
|                |login      |non-login  |      |
+----------------+-----------+-----------+------+
|/etc/profile    |   A       |           |      |
+----------------+-----------+-----------+------+
|/etc/bash.bashrc|           |    A      |      |
+----------------+-----------+-----------+------+
|~/.bashrc       |           |    B      |      |
+----------------+-----------+-----------+------+
|~/.bash_profile |   B1      |           |      |
+----------------+-----------+-----------+------+
|~/.bash_login   |   B2      |           |      |
+----------------+-----------+-----------+------+
|~/.profile      |   B3      |           |      |
+----------------+-----------+-----------+------+
|BASH_ENV        |           |           |  A   |
+----------------+-----------+-----------+------+
|                |           |           |      |
+----------------+-----------+-----------+------+
|                |           |           |      |
+----------------+-----------+-----------+------+
|~/.bash_logout  |    C      |           |      |
+----------------+-----------+-----------+------+

একাধিক প্রশ্নের একই উত্তর পোস্ট করার পরিবর্তে যদি আপনি নিজের উত্তরটি প্রশ্নকারীর নির্দিষ্ট প্রয়োজনীয়তার জন্য উপযুক্ত করতে পারেন তবে এটি পছন্দ করা হয়। উত্তর যদি উভয় প্রশ্নের একইরকম হয় তবে আপনার উচিত একটি একক উত্তর পোস্ট করা এবং অন্য প্রশ্নগুলিকে মূল নকল হিসাবে বন্ধ করার জন্য ভোট দেওয়া voting
মকুবাই

1
@ মোকুবাই অন্য প্রশ্নটি ইতিমধ্যে এটির একটি সদৃশ হিসাবে চিহ্নিত হয়েছে।
Flimm

@ElipticalView: SET কিছুই করার মাধ্যমে, আপনি লাইন উল্লেখ করছি: [ -z "$PS1" ] && return? আমার উত্তরের টেবিলটি স্ক্রিপ্টগুলির বিষয়বস্তু নির্বিশেষে বাশ দ্বারা চালিত স্ক্রিপ্টগুলির তালিকা দিচ্ছে, যদি স্ক্রিপ্টে নিজেই লাইন থাকে তবে [ -z "$PS1" ] && returnঅবশ্যই এটি কার্যকর হবে, তবে আমি মনে করি না এর অর্থ হওয়া উচিত আমার পরিবর্তন হওয়া উচিত টেবিল।
ফ্লিম

5

হেড অফ / ইটিসি / প্রোফাইলে একটি ভাল মন্তব্য

উপরে ফ্লিমের দুর্দান্ত উত্তরের উপর ভিত্তি করে, আমি আমার ডেবিয়ান / ইত্যাদি / প্রোফাইলের মাথায় এই নতুন মন্তব্যটি অন্তর্ভুক্ত করেছি, (আপনার এটিকে আপনার ডিস্ট্রোর জন্য সামঞ্জস্য করতে হতে পারে)) :

# For BASH: Read down the appropriate column. Executes A, then B, then C, etc.
# The B1, B2, B3 means it executes only the first of those files found.  (A)
# or (B2) means it is normally sourced by (read by and included in) the
# primary file, in this case A or B2.
#
# +---------------------------------+-------+-----+------------+
# |                                 | Interactive | non-Inter. |
# +---------------------------------+-------+-----+------------+
# |                                 | login |    non-login     |
# +---------------------------------+-------+-----+------------+
# |                                 |       |     |            |
# |   ALL USERS:                    |       |     |            |
# +---------------------------------+-------+-----+------------+
# |BASH_ENV                         |       |     |     A      | not interactive or login
# |                                 |       |     |            |
# +---------------------------------+-------+-----+------------+
# |/etc/profile                     |   A   |     |            | set PATH & PS1, & call following:
# +---------------------------------+-------+-----+------------+
# |/etc/bash.bashrc                 |  (A)  |  A  |            | Better PS1 + command-not-found 
# +---------------------------------+-------+-----+------------+
# |/etc/profile.d/bash_completion.sh|  (A)  |     |            |
# +---------------------------------+-------+-----+------------+
# |/etc/profile.d/vte-2.91.sh       |  (A)  |     |            | Virt. Terminal Emulator
# |/etc/profile.d/vte.sh            |  (A)  |     |            |
# +---------------------------------+-------+-----+------------+
# |                                 |       |     |            |
# |   A SPECIFIC USER:              |       |     |            |
# +---------------------------------+-------+-----+------------+
# |~/.bash_profile    (bash only)   |   B1  |     |            | (doesn't currently exist) 
# +---------------------------------+-------+-----+------------+
# |~/.bash_login      (bash only)   |   B2  |     |            | (didn't exist) **
# +---------------------------------+-------+-----+------------+
# |~/.profile         (all shells)  |   B3  |     |            | (doesn't currently exist)
# +---------------------------------+-------+-----+------------+
# |~/.bashrc          (bash only)   |  (B2) |  B  |            | colorizes bash: su=red, other_users=green
# +---------------------------------+-------+-----+------------+
# |                                 |       |     |            |
# +---------------------------------+-------+-----+------------+
# |~/.bash_logout                   |    C  |     |            |
# +---------------------------------+-------+-----+------------+
#
# ** (sources !/.bashrc to colorize login, for when booting into non-gui)

এবং এটি উল্লেখ করতে অন্য সেটআপ ফাইলগুলির প্রত্যেকের মাথায় এই নোট:

# TIP: SEE TABLE in /etc/profile of BASH SETUP FILES AND THEIR LOAD SEQUENCE

আমি মনে করি গুরুত্বপূর্ণ যে ডিবিয়ানের / ইত্যাদি / প্রোফাইল ডিফল্ট উত্স অনুসারে (অন্তর্ভুক্ত) /etc/bash.bashrc (এটি যখন /etc/bash.bashrc উপস্থিত থাকে)। সুতরাং লগইন স্ক্রিপ্টগুলি উভয় / ইত্যাদি ফাইল পড়ে, যখন লগ-ইন না করে কেবল bash.bashrc পড়ে।

এছাড়াও লক্ষণীয় যে /etc/bash.bashrc ইন্টারেক্টিভভাবে চালানো হয় না তখন কিছুই করতে সেট করা হয়। সুতরাং এই দুটি ফাইল কেবল ইন্টারেক্টিভ স্ক্রিপ্টগুলির জন্য।


4

ব্যাশের নিজের কনফিগারেশন যুক্তিটি জটিল নয় এবং এই পৃষ্ঠায়, সার্ভারফল্টে এবং বহু ব্লগে অন্য জবাবগুলিতে ব্যাখ্যা করা হয়েছে। লিনাক্স ডিস্ট্রিবিউশনগুলি ব্যাশ তৈরি করে তবে সমস্যাটি হ'ল , জটিল এবং বিভিন্ন উপায়ে তারা ডিফল্টরূপে বাশকে কনফিগার করে। http://mywiki.wooledge.org/DotFiles এর মধ্যে কয়েকটি ক্রাইয়ের সংক্ষেপে উল্লেখ করেছে। ফেডোরা ২৯-তে এখানে একটি নমুনা সন্ধান করা হয়েছে, এটি দেখায় যে কোন ফাইল উত্সটি দেয় যা অন্যান্য ফাইল (গুলি) এবং কোন সরল দৃশ্যের জন্য আদেশ করে: দূরবর্তীভাবে এসএসএসের সাথে সংযুক্ত হচ্ছে এবং তারপরে অন্য একটি সাবশেল শুরু করবে:

ssh fedora29
 └─ -bash # login shell
      ├── /etc/profile
      |    ├─ /etc/profile.d/*.sh
      |    ├─ /etc/profile.d/sh.local
      |    └─ /etc/bashrc
      ├── ~/.bash_profile
      |    └─ ~/.bashrc
      |          └─ /etc/bashrc
      |
      |
      └─ $ bash  # non-login shell
            └─ ~/.bashrc
                 └─ /etc/bashrc
                       └─ /etc/profile.d/*.sh

ফেডোরার সবচেয়ে জটিল যুক্তিটি এখানে রয়েছে /etc/bashrc। উপরে /etc/bashrcযেমন দেখা যায় যে কোনও ফাইল ব্যাশ নিজেই এটি সম্পর্কে জানে না, আমি সরাসরি বলতে চাইছি না। ফেডোরার /etc/bashrcপরীক্ষা কিনা:

  • এটি একটি লগইন শেল দ্বারা উত্সাহিত করা হচ্ছে,
  • এটি একটি ইন্টারেক্টিভ শেল দ্বারা উত্সাহিত করা হচ্ছে,
  • এটি ইতিমধ্যে উত্সাহিত হয়েছে

... এবং তারপরে সম্পূর্ণ ভিন্ন জিনিসগুলি করে।

আপনি যদি মনে করেন উপরের গ্রাফটিকে খুব খারাপ মনে করতে পারেন কারণ এটি প্রায় পর্যাপ্ত নয়: এই গ্রাফটি কেবল একটি দৃশ্যের বর্ণনা দেয়, অ ইন্টারেক্টিভ স্ক্রিপ্টগুলি চালানো বা গ্রাফিক্যাল সেশন শুরু করার সময় কিছুটা ভিন্ন ঘটে। বাদ দিয়েছি ~/.profile। আমি bash_completionস্ক্রিপ্টগুলি বাদ দিয়েছি । পিছিয়ে সামঞ্জস্যের কারণে, বাশকে তার আচরণ পরিবর্তনের /bin/shপরিবর্তে অনুরোধ করা হচ্ছে /bin/bash। Zsh এবং অন্যান্য শাঁস সম্পর্কে কি? এবং অবশ্যই বিভিন্ন লিনাক্স ডিস্ট্রিবিউশনগুলি বিভিন্নভাবে কাজ করে, উদাহরণস্বরূপ ডিবিয়ান এবং উবুন্টু বেস এইচ -এর একটি নন-স্ট্যান্ডার্ড সংস্করণ নিয়ে আসে , এতে রয়েছে ডেবিয়ান-নির্দিষ্ট কাস্টমাইজেশন (গুলি)। এটি উল্লেখযোগ্যভাবে একটি অস্বাভাবিক ফাইলের সন্ধান করে:/etc/bash.bashrc। এমনকি যদি আপনি একটি একক লিনাক্স বিতরণে আটকে থাকেন তবে এটি সম্ভবত সময়ের সাথে সাথে বিকশিত হয়। অপেক্ষা করুন: আমরা ম্যাকওএস, ফ্রিবিএসডি, এমনকি স্পর্শও করি নি ... অবশেষে, তাদের প্রশাসকরা তাদের যে সিস্টেমটি ব্যবহার করতে হবে তা কনফিগার করেছে এমন আরও সৃজনশীল পদ্ধতিতে আটকে থাকা ব্যবহারকারীদের জন্য একটি চিন্তাভাবনা করা যাক।

যেহেতু এই বিষয়টির আলোচনার অবিচ্ছিন্ন প্রবাহটি দেখায়, এটি একটি হারানো কারণ। যতক্ষণ আপনি কেবল নতুন মান যুক্ত করতে চান ততক্ষণ কিছু "ট্রায়াল এবং ত্রুটি" যথেষ্ট হবে। আসল মজা শুরু হয় যখন আপনি ইতিমধ্যে অন্য (ইন / ইত্যাদি) এ সংজ্ঞায়িত কিছু (ব্যবহারকারী) ফাইলের মধ্যে কিছু পরিবর্তন করতে চান । তারপরে ইঞ্জিনিয়ারিংয়ের জন্য এমন কিছু সময় ব্যয় করার জন্য প্রস্তুত থাকুন যা কখনও পোর্টেবল হয় না।

শেষ মুহুর্তের জন্য এখানে জুনিয়র হিসাবে ক্লিয়ার লিনাক্সের একই, সরল দৃশ্যের জন্য এখানে "উত্স গ্রাফ" রয়েছে:

ssh clearlinux
 └─ -bash # login shell
      ├── /usr/share/defaults/etc/profile
      |    ├─ /usr/share/defaults/etc/profile.d/*
      |    ├─ /etc/profile.d/*
      |    └─ /etc/profile
      ├── ~/.bash_profile
      |
      |
      └─  $ bash   # non-login shell
           ├─ /usr/share/defaults/etc/bash.bashrc
           |      ├─ /usr/share/defaults/etc/profile
           |      |    ├─ /usr/share/defaults/etc/profile.d/*
           |      |    ├─ /etc/profile.d/*
           |      |    └─ /etc/profile
           |      └─ /etc/profile
           └─ ~/.bashrc
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.