লগইন শেল হিসাবে বাশ শুরু করতে জিনোম-টার্মিনালটি কনফিগার করুন, .bashrc পড়েন না


24

আমি জিনোম-টার্মিনালের সাথে আরভিএমকে সংহত করার চেষ্টা করছি ।

ডিফল্ট হিসাবে, জিনোম-টার্মিনাল লগইন শেল হিসাবে বাশ শুরু করে না। আরভিএম স্থাপনের একই বিষয় সম্পর্কে এই উত্তরেrun command as a login shell প্রস্তাবিত হিসাবে আমি সক্ষম করেছি , তবে আমি যখন এটি করি তখন ফাইলটি পড়েন না।.bashrc

উদাহরণস্বরূপ, আমি একটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করি .bashrcএবং তারপরে যখন আমি একটি নতুন জিনোম-টার্মিনাল শুরু করি তখন আমি এটি পড়তে পারি না। source .bashrcফাইলটি পড়ার জন্য আমার স্পষ্টভাবে চালানো দরকার ।

এটা কি প্রত্যাশিত আচরণ?

উত্তর:


38

হ্যাঁ, এটি প্রত্যাশিত আচরণ।

সংক্ষেপে, আচরণটি নিম্নরূপ:

  • একটি ইন্টারেক্টিভ লগইন শেল হিসাবে বাশ শুরু হয়েছিল: পঠিত ~/.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"

এখন যদি ব্যাশটি ইন্টারেক্টিভ লগইন শেল হিসাবে শুরু হয় তবে এটি নীচের ফাইলগুলি পড়বে:

  1. ~/.bash_profile
  2. ~/.profile
  3. ~/.bashrc

এবং যদি ব্যাশটি ইন্টারেক্টিভ অ-লগইন শেল হিসাবে শুরু করা হয়:

  1. ~/.bashrc

আপনি স্টাফ যা ব্যাশ নির্দিষ্ট করা উচিত ~/.bashrcএবং স্টাফ যা ব্যাশ নির্দিষ্ট নয় ~/.profile। উদাহরণস্বরূপ ভিতরে PATHযায় ~/.profileএবং HISTCONTROLযায় ~/.bashrc

নোট যে ~/.profileবাশ নির্দিষ্ট নয়। অন্যান্য পাঠ্য ভিত্তিক শেল (উদাহরণস্বরূপ sh বা ksh) এবং গ্রাফিকাল শেল (জিনোম) এছাড়াও পড়ে ~/.profile। এজন্য আপনার বাশ নির্দিষ্ট জিনিস .োকানো উচিত নয় ~/.profile


1
+1 টি। ধন্যবাদ, এটি আমাকে প্রাচীরের দিকে চালিত করছিল ... :-)
সমৃদ্ধ

1
mywiki.wooledge.org/DotFiles কেন এটি এর মতো কিছু ইতিহাস ব্যাখ্যা করে। আরভিএমের সাথে এই ইস্যুটির মূল কারণটি হল যে আরভিএম কোড রাখে, তার ~/.bashrcপরিবর্তে প্রোফাইলে প্রথমে থাকা উচিত। দোষটি আরভিএম-এ।
গিরিহা

@ গিরিহা অনুসারে তাদের ব্যবহার করা উচিত ছিল~/.profile
সান্মাই

যুক্তিটি হ'ল প্রোফাইল স্ক্রিপ্ট .bashrcযা করা দরকার তার তুলনায় মূল্যায়ন নিয়ন্ত্রণ করতে পারে। ইন্টারেক্টিভ শেলটি যদি সর্বদা পঠিত থাকে .bashrcতবে তা কি আগে বা পরে হওয়া উচিত .profile? আপনি যদি এমন কিছু সেট আপ করতে চান .bashrcযা .profileমঞ্জুর হয়? এবং একই সময়ে আপনি কিছু জিনিস .bashrcসেট আপ করা কিছু উপর নির্ভর করতে চান .profile? উভয় দৃশ্যের লোডিং অর্ডার সন্তুষ্ট করবে না।
কাজ

11

এটি কোনও খারাপ ডিজাইনের সিদ্ধান্ত নয়, বা কোনও বাগ বা শাঁস এবং টার্মিনালগুলির প্রত্যাশিত আচরণ নয়

এটি কেবল জিনোম টার্মিনালে প্রতি প্রোফাইল কনফিগারেশন বিকল্পের দুর্ভাগ্যজনক ডিফল্ট মান, যা আপনি সহজেই ঠিক করতে পারেন।

  1. সম্পাদনা -> প্রোফাইল পছন্দসমূহ এ যান ।

  2. শিরোনাম এবং কমান্ড ট্যাবটি নির্বাচন করুন ।

  3. লক্ষ করুন লগইন শেল চেকবক্স হিসাবে রান কমান্ডটি কীভাবে চেক করা হচ্ছে! এটি পরীক্ষা করে দেখুন।

এটাই. আপনি যদি Defaultপ্রোফাইলে এটি করেন বা নতুন টার্মিনালগুলি তৈরি করার সময় যে প্রোফাইলটি ব্যবহার করতে কনফিগার করা থাকে তা আপনি লগইন শেলটি পান।

আমি অনুমান করছি যে ফণা নীচে, এই বিকল্পটি সম্ভবত এটি -lশেলটিতে বিকল্পটি পাস করার কারণ হতে পারে ।


0

আমার একই প্রশ্ন ছিল এবং আমি একটি সমাধান পেয়েছি: কেবল আসল লগইন শেলের জন্য এসএসএইচ ব্যবহার করুন!

১. সুপারভাইজার হিসাবে সম্পূর্ণ বিচ্ছিন্নতার জন্য ডেডিকেটেড আরভিএম সিস্টেম ব্যবহারকারী তৈরি করুন এবং একটি পাসওয়ার্ড নির্ধারণ করুন:

sudo su

useradd -m rvmuser

passwd rvmuser

২. নির্ভরতা ইনস্টল করুন যাতে সুপারভাইজারের পাসওয়ার্ড না জিজ্ঞাসা করে আরভিএম রুবি তৈরি করতে পারে:

apt-get install curl gawk libreadline6-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake bison libffi-dev

৩. আসল লগইন শেলটির জন্য লোকালহোস্টে এসএসএইচ (আপনার হতে পারে apt-get install ssh)

ssh rvmuser@localhost

৪. আরভিএম ইনস্টল করুন

\curl -sSL https://get.rvm.io | bash -s stable

5. লগ আউট এবং আবার ফিরে প্রবেশ করুন যাতে সমস্ত আরভিএম ফাংশন লোড হয়

exit

ssh rvmuser@localhost

6. আরভিএম ব্যবহার করুন :)


0

প্রোফাইল ইনিশিয়ালেশনটিতে বাশ ব্যবহার করার সময় এটি সাধারণ বিষয় .bash_profile, যা কেবল লগইনে ব্যাশ দ্বারা পড়া হয়, অন্য শেলগুলি historতিহাসিকভাবে ভাগ করে নিয়েছে .profile। এটি আপনাকে বাশ-নির্দিষ্ট কমান্ডগুলিতে রাখতে দেয় .bash_profile

নীচের ব্যবহার সাধারণত সংজ্ঞাযুক্ত সংজ্ঞাগুলি টেনে আনার জন্য করা হয় .bashrc:

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.